HowTo: Add support for the "Huawei E8372" on Jetson Nano builds

Important: the current Jetson Nano HostOS build v2.47.0+rev7 does not need this fix!
It needed vor the HostOS version v2.45.x of the Jetson Nano.

This script should help you to add support for the Huawei E8372 into your BalenaOS.
The challenge, the device 12d1:1f01 will be switched to the 12d1:155e mode and not 12d1:14db.
To my knowlege this is only possible by modifying the /etc/usb_modeswitch.conf and changing the /usr/share/usb_modeswitch/12d1:1f01 rule.

There are two changes that need to be made.

  • Firstly the /etc/usb_modeswitch.conf needs to be modified such that HuaweiAltModeGlobal=0 is deactivated and SetStorageDelay=4 is enabled.
  • Secondly the /usr/share/usb_modeswitch/12d1:1f01 needs to be adjusted such that it correctly mounts the E8372 device.

This is done by the following script, that you need to run in the HostOS image :slight_smile:

mount -o remount,rw /
sed -i "s/#Set/Set/g" /etc/usb_modeswitch.conf
echo "HuaweiAltModeGlobal=0" >> /etc/usb_modeswitch.conf
cat /etc/usb_modeswitch.conf
echo "# Huawei E8372
TargetVendor= 0x12d1
TargetProduct= 0x14db

MessageContent=55534243123456780000000000000a11062000000000000100000000000000
NoDriverLoading=1" > /usr/share/usb_modeswitch/12d1:1f01
cat /usr/share/usb_modeswitch/12d1:1f01
udevadm control --reload-rules
reboot 

# press the power button or unplug the LTE stick

Of anyone has a idea how this could be integrated into the meta-balena layer or be changed from within the container. Please help me to do so :slight_smile:

The specific recipes for the USB modeswitch would be here: https://github.com/balena-os/meta-balena/tree/master/meta-balena-common/recipes-support/usb-modeswitch

I am not an expert on how these recipes work (it looks like they pull files in from an external source) but you could make changes here before you build your image :+1:

This issue is not present with the HostOS 2.47.0+rev7, therefore i did not try to integrate this into the Yocto Build process.

I provided the code snipped just in case some one has deployed some, devices that need this update and can not upgrade the HostOS remotely.

The mentioned link is the right place to start. By the way the last commit at the 20. Jan 2020 seem to have fixted our issue :smiley:

Awesome. I’m glad it’s working for you and thanks for sharing the info above for those who need it. If anyone wants to backport the change, then my comments will assist them there :+1:

I experienced a strange behaviour with the Huawei E8372, it starts appearing and disappearing as eth1 device due to some error in its configuration:

[  121.348225] cdc_ether 1-2.1:1.0 eth1: kevent 12 may have been dropped
[  121.351304] cdc_ether 1-2.1:1.0 eth1: kevent 11 may have been dropped
[  121.355466] cdc_ether 1-2.1:1.0 eth1: kevent 11 may have been dropped
[  121.688134] cdc_ether 1-2.1:1.0 eth1: unregister 'cdc_ether' usb-70090000.xusb-2.1, CDC Ethernet Device

Downgrading to usb_modeswitch 2.5.0 and adding a custom patch for the E8372 stick into the meta-balena layer seems to have solve the bug as of now.

meta-balena/meta-balena-common/recipes-support/usb-modeswitch-data/patches/huawei-e8372.patch

Index: usb-modeswitch-data-20170806/usb_modeswitch.d/12d1:1f01
===================================================================
--- usb-modeswitch-data-20170806.orig/usb_modeswitch.d/12d1:1f01
+++ usb-modeswitch-data-20170806/usb_modeswitch.d/12d1:1f01
@@ -1,5 +1,6 @@
-# Huawei E353 (3.se) and others
-TargetVendor=0x12d1
-TargetProductList="14db,14dc"
-HuaweiNewMode=1
+# Huawei E8372
+TargetVendor= 0x12d1
+TargetProduct= 0x14db

+MessageContent=55534243123456780000000000000a11062000000000000100000000000000
+NoDriverLoading=1

Downgrading usb-modeswitch by setting usb-modeswitch/usb-modeswitch-data_20191128.bb to

RDEPENDS_${PN} = "usb-modeswitch (= 2.5.0)"

I used the 0c90c7e890b724ba875afa80eac50e2a8a51aa58 commit as reference for the usb-modeswitch implementation of E8372 and substituted the implemented Huawei E3372 device.

Hi, Langhalsdino and thanks for the information. We can take a look at this device to investigate further if you would like, though you would need to connect the board via ethernet, enable support access and share the device UUID with us so we can access. If we do investigate, there is a potential the device may require reprovisioning so please only do this if this device is not being used in a production environment.

Downgrading to usb-modeswitch seems to have worked, therefore further investigation is not needed on my side.

If you really would like to debug this, i could setup another device for you :slight_smile:

Hi thanks, glad the current workaround works for you. Thanks for the offer and we would like to debug this further, though our device team has a few other priorities so are unlikely to do so for another week. If you can arrange a test device to be online at some point next week that would be awesome. If you can just add the device UUID here after enabling support access that would be great!

It is the same on my site, therefore let’s postpone this until some one else wants to use the Huawei E8372 LTE stick :slight_smile:

Therefore @anonymous_E8372_user feel free to comment this thread, if you need help and i am happy to assist you :slight_smile:

Perfect, many thanks for that. I’ve let the devices team know.