FX30 (wp7702) and Talon IoT card

I am using the FX30 wp7702 (4G LTE) and testing the Talon IoT Mirage Wifi exp card.
I have found some topics but all related with the FX30 3G (which needs to have installed a R14.xXXXX firmware).
The firmware on my target is FX30_WP77xx_full_R11.0.0.007-sierra-SWI9X06Y_02.22.12.00.cwe, ad I see there are pre-built wifi apps:
image

First question is if this is also supported with the FX30 wp7702 or only with the FX30 wp85 (3G), I assumed it is due to the pre-built apps.
If yes, the setup should be straight forward (I am starting from shell before moving to legato API), but it fails immediately after the:
wifi client start (I made sure the wifi ap was off).

According to the logs it can`t detect the wlan0 interface:
Jan 6 00:21:47 fx30 user.info Legato: INFO | wifiService[1256] | Could not read interface wlan0 flags: No such device
Jan 6 00:21:47 fx30 user.info Legato: INFO | wifiService[1256] | WEXT: Could not set interface ‘wlan0’ UP
Jan 6 00:21:47 fx30 user.info Legato: INFO | wifiService[1256] | wlan0: Failed to initialize driver interface

But this is in the interfaces file:
auto lo
iface lo inet loopback

Wireless interfaces

iface wlan0 inet dhcp
wireless_mode managed
wireless_essid any
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf

iface atml0 inet dhcp

Wired or wireless interfaces

auto eth0
iface eth0 inet dhcp

hwaddress ether 00:14:3E:9D:BA:E7

address 192.168.13.31

netmask 255.255.255.0

iface eth1 inet dhcp

Bluetooth networking

iface bnep0 inet dhcp

I have tried to initialize the driver with the wpa_supplicant but without success:
root@fx30:~# wpa_supplicant -Dnl80211 -iwlan0 -c/etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
Could not read interface wlan0 flags: No such device
nl80211: Driver does not support authentication/association or connect commands
nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Could not read interface wlan0 flags: No such device
wlan0: Failed to initialize driver interface

Anyone using the same module and having the same issue.

Hi @claudio.baldini,

We haven’t officially released support for the Talon wifi card, but some customers do indeed have it working on R11, pulled from Leaf, but prior to the GitHub migration.

I’ll check to see if there are some instructions that i can provide to you.

BR,
Chris

Hi @claudio.baldini

Please try these instructions, but note, they have not been verified, so they’re just for guidance.

Step 1: Obtain FX30 R11 linux src using leaf

Step 2: Customize FX30 Linux

Add WiFi BT layer from https://github.com/dpfrey/yocto_wp76_wp77_meta-bluetoothhttps://github.com/dpfrey/yocto_wp76_wp77_meta-bluetooth

You may have to comment out the following in " bluetooth.cfg "
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTSDIO=m

Step 3: Install custom Linux onto FX30

Step 4: Ensure UART2 is assigned to Linux

The FX30 interfaces UART2 with the IoT slot. UART2 is disabled by default. Assign it to Linux.

AT!MAPUART=17,2
AT!RESET

​​Step 5: Update Ti BT firwmare

Obtain the latest Ti BT firwmare,TIInit_11.8.32.bts, from https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/535853. Ensure the file size matches with the one below as the name of the file included by default with R9 is the same. Copy the firmware to /lib/firmware/ti-connectivity/ .

root@fx30:~# ls -la /lib/firmware/ti-connectivity/TIInit_11.8.32.bts
-rw-r–r-- 1 root root 72716 Jan 6 00:03 /lib/firmware/ti-connectivity/TIInit_11.8.32.bts​

Step 6: Start up the IoT card​

To start up the IoT card, the WiFi and BT drivers need to be loaded and IOT_GPIO2, IOT_GPIO3 & IOT_GPIO4 need to be enabled and set high. Please refer the attached script
init-Mirage-WiFi-BT-IoT.sh

root@fx30:~# ./init-Mirage-WiFi-BT-IoT.sh
Mirage Wi-Fi BT IoT Card init complte
root@fx30:~#​

Step 7: Bluetooth

init-ti-bt.sh

root@fx30:~# ./init-ti-bt.sh
Found a Texas Instruments’ chip!
Firmware file : /lib/firmware/ti-connectivity/TIInit_11.8.32.bts
Loaded BTS script version 1
texas: changing baud rate to 3000000, flow control to 1
Device setup complete
hci0: Type: Primary Bus: UART
BD Address: 5C:31:3E:DF:D8:33 ACL MTU: 1021:6 SCO MTU: 180:4
UP RUNNING
RX bytes:609 acl:0 sco:0 events:30 errors:0
TX bytes:401 acl:0 sco:0 commands:30 errors:0

Run ‘bluetoothctl, scan on, scan off’ to manage BT
root@fx30:~# bluetoothctl
[NEW] Controller 5C:31:3E:DF:D8:33 BlueZ 5.41 [default]
[bluetooth]# scan on
Discovery started
[CHG] Controller 5C:31:3E:DF:D8:33 Discovering: yes
[NEW] Device 57:1D:F2:BC:37:90 57-1D-F2-BC-37-90
[NEW] Device 7B:5D:29:87:6A:CF 7B-5D-29-87-6A-CF
[NEW] Device 66:AC:6B:A6:97:38 66-AC-6B-A6-97-38
[NEW] Device 67:E6:BE:B8:37:73 67-E6-BE-B8-37-73
[NEW] Device DC:54:D7:41:A6:69 Echo Show 5-42E
[bluetooth]# scan off
[CHG] Device DC:54:D7:41:A6:69 RSSI is nil
[CHG] Device 67:E6:BE:B8:37:73 RSSI is nil
[CHG] Device 66:AC:6B:A6:97:38 RSSI is nil
[CHG] Device 7B:5D:29:87:6A:CF RSSI is nil
[CHG] Device 57:1D:F2:BC:37:90 RSSI is nil
[CHG] Controller 5C:31:3E:DF:D8:33 Discovering: no
Discovery stopped
[bluetooth]# exit
[DEL] Controller 5C:31:3E:DF:D8:33 BlueZ 5.41 [default]
root@fx30:~#

Step 7: WiFi

WiFi can be manged using Legato’s in built " wifi " tool. Example of WiFi client is below

root@fx30:~# wifi client start
successfully called start.
root@fx30:~# wifi client scan
starting scan.
Found: SSID: “SOMLIOT” BSSID: “02:9f:c2:3d:5b:20” Strength:-93 Ref:0x10000003
Found: SSID: “” BSSID: “f0:9f:c2:3d:5b:20” Strength:-93 Ref:0x1000000b
root@fx30:~#​

talon_mirage_scripts.7z (699 Bytes)

hi @cchenry thank you for this but I still have the problem when building from source, will this work?

@cchenry, thank you for the help and feedback, using the new FX30 3.0.0.0 package and the leaf R14 seems have fixed the problem with building the yocto image.
With the new package, do I still need to go through the steps above or the layers for the WiFi are already included in the stock firmware?

H Claudio,
Unfortunately, we haven’t validated the Talon WiFi on R14.1 so you’ll still need to go through that procedure. Please note, the procedure was written for R11 so I can’t guarantee it will be identical for R14.1.

There are plans to either put out an application note with detailed steps, or to include it in the stock firmware, but that would be in a future release.

Best regards,
Chris

This seems working, I haven’t tested the blutooth but the wifi client is working and I can connect to an AP + liaising and IP from dhcp server.
As I am trying to replace the modem connection with wifi for an existing app I have used to connect to a mqtt broker, I can ping the backend from shell but my app can`t connect to the broker anymore as is failing the TLS handshake.
The connection should go through port 443, just for a trial I have bypassed the firewall:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -j ACCEPT

And also unblocked the port on my router, which is blocked by default.

If I use the modem connection, then it will work fine, but as soon as I try to use the wifi internet connection it will fail for TLS handshake with backend.
Any idea why his is happening?

I am also testing the connectivity through my ubuntu machine which works well, so the problem is sitting at the device level and not with the routing.

Is there any bridging connectivity to the wlan0 which I need to do?
The ping is working so I assume this is already done by the bridge interface…

Hi @claudio.baldini,

I’m not certain if you’ve set up your firewall correctly. Could you try flushing your firewall first?
iptables -F

You may need to setup a proper rule for port 443 on the wlan0 interface.

BR,
Chris

have flushed the firewall, and then allowed all the traffic for wlan0 in input

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i wlan0 -j ACCEPT

same if I try to setup the port 443 only for tcp and udp
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -i wlan0 -p tcp -m tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan0 -p udp -m udp --sport 443 -m state --state ESTABLISHED -j ACCEPT

still the same problem with the TLS handshake

Do I still need to use a legato API to activate the data connection for my apps?
I did use that for the modem application but not for the wifi.
So something like starting le_data or le_dcs?
I can get the connection to the internet from shell, but it seems that the app doesnt reach internet? Dont think the firewall is a problem as I have basically allowed all the traffic in…

found the problem to be with the difference of time between my system and the backend.
once I run the ntpdate, the the TLS handshake error disappear.

Is there any way to get air vantage working over the wifi connection? Or the only option is over cellular?

Hi @claudio.baldini,
I’m not absolutely certain, but I think you can use wifi. You’ll need to open the ports on wlan0.
You can check the iptables-ro file. I think it’s in the /use/sbin folder but I’ll have to double check.
BR,
Chris

@cchenry I have opened the wlan0 completely at this stage, not only specific ports, then will narrow it down once things are working.

The problem I have is that when I start the le_data_Request I keep getting the ‘disconnected’ flag from the handler and never connects. Did check that the first technology is WiFi and not cellular.

As far as I can see the avcService works on to of the data (le_data) and I see you can setup a technology to be used for this service. Actually it seems that the first one ranked is the WiFi, so I am checking:
le_data_GetFirstUsedTechnology() == LE_DATA_WIFI
And then to request the data connection le_data_Request()

However, the avcDaemon only resets the timer and never actually connects to AirVantage server.
Jul 26 23:30:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcServer.c PollingTimerExpiryHandler() 2407 | A connection to server will be made in 15 minutes
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c StopBearer() 746 | Stop bearer 0x22d
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c StartBearer() 969 | Start Bearer
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c avcClient_Connect() 1175 | Starting retry timer of 60 min at index 1
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcServer.c PollingTimerExpiryHandler() 2391 | Polling timer expired
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c avcClient_Connect() 1101 | Retry timer already running
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c StopBearer() 746 | Stop bearer 0x22d
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c StartBearer() 969 | Start Bearer
Jul 26 23:45:42 fx30s user.info Legato: INFO | avcDaemon[1322]/avcDaemon T=main | avcClient.c avcClient_Connect() 1175 | Starting retry timer of 15 min at index 0

Hi @claudio.baldini
Could you please post this question on the legato.io forum? You’ll get better legato support there.
BR,
Chris