【问题标题】:Connect Beaglebone black to Internet via Fona and a Sim needing APN authentication通过 Fona 和需要 APN 身份验证的 Sim 将 Beaglebone black 连接到 Internet
【发布时间】:2015-11-07 22:22:54
【问题描述】:

我有一个 BBB、一个来自 Adafruit 的 Fona 和一个 LycaMobile 3G Sim 卡,我想使用这个 3G sim 将 BBB 连接到互联网。我跟着:this tutorial from adafruit 这样做。

但要连接到我的 APN,我需要设置用户名和密码。所以我这样做了:

在我的 /etc/ppp/peers/fona 中:
而不是
noauth
我把:
auth user lmfr name lycamobile

在我的 /etc/ppp/chap-secrets 以及我的 etc/ppp/pap-secrets 中我放了:

"lmfr"    *    "plus"

但是当我这样做时出现以下错误:

sudo pon fona

/usr/sbin/pppd: The remote system is required to authenticate itself
/usr/sbin/pppd: but I couldn't find any suitable secret (password) for it to use to do so
/usr/sbin/pppd: (None of the available passwords would let it use an IP address)

有谁知道如何解决此问题或通过 APN 身份验证连接到 Fona 的其他方法?

【问题讨论】:

    标签: raspberry-pi beagleboneblack gprs iot apn


    【解决方案1】:

    即使在严格遵循Adafruit FONA setup instructions 的情况下,在 Raspberry Pi 2 和 3 上使用 FONA 进行身份验证时,以下步骤帮助我让它在两个 Pi 上工作 - 基于新安装的 raspbian/debian stretch 操作系统。将以下内容应用于您的 BBB:

    • 更新操作系统:

      sudo apt-get update
      sudo apt-get dist-upgrade
      
    • 安装必要的软件包:

      sudo apt-get install ppp screen 
      
    • 按照 Adafruit FONA 设置说明中的说明将 FONA 板连接到 Pi/BBB
    • 确保您禁用内核对硬件串行连接的使用!

      Pi2: follow Adafruit description
      Pi3: "sudo raspi-config" > "Interfacing Options" > "Serial"
      > "...login shell... over serial?" NO
      > "...serial port hardware enabled?" YES
      
    • 退出/完成 raspi 配置和
    • 检查

      sudo nano /boot/config.txt
      
    • 如果包含 enable_uart=1 行。如果没有,请将其添加为新行并保存

      [Ctrl]+[x], [y], [Enter] > reboot!
      
    • 为您的 Pi/BBB 找到正确的串行端口。此命令可能会有所帮助 - 它显示所有可用端口:

      ls /dev
      
    • 例子:

      Pi2: "/dev/ttyAMA0"
      Pi3: "/dev/serial0"
      BBB: "/dev/tty04" (as stated at Adafruit)
      
    • 确保 FONA 在相应的串行端口上应答 - 在此示例中为 Pi3:

      screen /dev/serial0 115200
      
    • 应该会出现黑屏(终端窗口)。写

      AT [Enter]
      
    • 您应该得到 OK 作为响应。如果您没有得到“OK”,只需断开电池,然后重新连接并再试一次!您可以随时通过

      退出终端窗口
      [Ctrl]+[A]
      :quit [Enter]
      

    只要 FONA 板通过串行连接进行应答,蜂窝连接(尤其是身份验证)就是目标。 在“fona”中将 noauth 更改为 auth 对我没有帮助,也没有编辑“chap-secrets”和/或“pap-secrets”。将 3 个 APN 值包含在“fona”文件中:

        sudo -i
        cd /etc/ppp/peers
        nano fona
    
    • 在“连接”行中输入正确的 APN 名称,就像提到的 Adafruit 一样:

      connect "/usr/sbin/chat ... -T T-Mobile"
      
    • 并将“T-Mobile”替换为您的 APN 名称。确保在下一个块中只取消注释一行,在成功测试串行连接时包含与上面完全相同的串行端口(在本示例中再次为 Pi3 端口)

      /dev/serial0
      
    • 现在在文件末尾添加以下部分以进行 fona-file 身份验证:

      #Authentication
      user abcd@efgh.dom << here goes the providers APN user name
      password 1a2b3d4e << here goes the providers APN password 
      
    • 保存并退出文件并退出超级用户模式

      [Ctrl]+[x], [Y], [Enter]
      exit [Enter]
      
    • 至少试一试,如 Adafruit 所述

      sudo pon fona
      
    • 如果红色 LED 开始每秒闪烁两次,您就完成了!如果没有,请按照 Adafruit 故障排除部分进行操作,这应该可以解决丢失的点点滴滴。

    基本部分是适当的串行连接,并且 - 一旦工作正常 - “fona”文件中的身份验证

    特别是蜂窝连接和身份验证应该可以被 BBB 采用,一旦建立了串行连接。

    【讨论】:

      【解决方案2】:

      这就是我所做的:

      1. 我确保在将capemgr.enable_partno=BB-UART4 添加到uEnv.txt 后我可以看到/dev/ttyO4
      2. 我安装了 ppp、screen、elinks、jdk1.8-linux-arm 和 librxtx-java
      3. 我使用了fona library from angryelectron。所以我在我的电脑上下载了这个库并通过“ant jar”构建它,它生成了一些 jar 文件。
      4. 我创建了一个 Main.java 文件,我将其放入其中:

        公共类主要{ //确保您可以在 Beagle Bone Black 上看到 /dev/ttyO4 或在 raspberryPi 上看到 /dev/ttyAMA0 私有静态最终字符串 PORT = "/dev/ttyO4"; 私有静态最终整数波特= 115200;

        //Credentials for Lycamobile Wireless required for testing GPRS.
        private static final String APN = "data.lycamobile.fr";
        private static final String USER = "lmfr";
        private static final String PWD = "plus";
        private static final String SMTP = "smtp.lycamobile.fr";
        

        public static void main(String[] args) { 尝试 { fona.open(端口,波特率); testGprsHttpGet(); fona.close(); } 捕获(异常 e) { System.out.println("异常" + e); } } 公共静态无效 testGprsHttpGet() 抛出 FonaException { System.out.println("gprsHttpGet"); fona.gprsEnable(APN,用户,密码);

            String response = fona.gprsHttpGet("http://httpbin.org/user-agent");
                if (!response.contains("SIMCOM_MODULE")) {
                   System.out.println("Fails");
                }
                else{
                   System.out.println(response);
                }
              }
            }
        

      还创建了一个简单的 exec.sh 文件:

      JAVA_OPT="-Djava.library.path=/usr/lib/jni -Dgnu.io.rxtx.SerialPorts=/dev/ttyO4" javac -cp .:fona-0.92.jar:fona.jar:RXTXcomm-2.2pre2.jar:fona-0.92-sources.jar Main.java java $JAVA_OPT -cp .:fona-0.92.jar:fona.jar:RXTXcomm-2.2pre2.jar:fona-0.92-sources.jar 主要

      我将所有这些文件放在一个文件夹中: fona-0.92.jar fona.jar RXTXcomm-2.2pre2.jar fona-0.92-sources.jar Main.java 并复制 BBB 上的文件夹

      1. 启动了我的脚本 exec.sh 就是这样。在输出中我可以看到:
        { "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" }

      NET 指示灯每秒闪烁两次。

      希望这对其他人有所帮助。

      【讨论】:

      • 有一件事我不明白:为什么你问一个问题并在同一分钟回答它?
      • 因为我有答案,我认为它们可能是另一种更好的解决方法
      • 好的,我明白了。但这不是 SO 应该如何工作的。如果您有解决方案但对它不满意,请提出具体问题或将其放入 codereview 社区。当您将问题和答案一起发布时,人们可能不会看它,因为他们认为“好的,它已经有了答案”
      • 我这样做是因为 SO 建议如果我有答案就发布一个答案,所以我没有......但我明白你的意思。而且我也没有看到类似的问题,这个答案可能会在以后对某人有所帮助......为此 -1 ??
      • 这个想法是,如果您的“真正问题”无法由其他人回答并且您自己发现,您可以发布答案。 SO 不应该是一个 wiki,您可以在其中发布知识以供以后查找。而且-1不是我的,我会否决答案而不是问题;-)
      猜你喜欢
      • 2017-03-22
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多