[Ask] Broadband Connection on Jetson TX2

Hi all,

I am trying to install Huawei USB dongle on my Jetson TX2 module.
I have succesfully switch the USB dongle from mass storage to Modem/network card.
Here, the result from lsusb

Bus 001 Device 006: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard

However, I cannot make a broadband connection.
It seems that the network manager still does not detect the modem.
Then, I tried to inspect my system and I found that the modemmanager is not working properly in my Jetson TX2.

I run : sudo systemctl status ModemManager.service and the result is

ModemManager.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)

I have successfully installed the same modem on my Ubuntu 16.04 desktop.
When, I execute sudo systemctl status ModemManager.service the result is:

ModemManager.service - Modem Manager
Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset; enabled)
Active: active (running) since …

Thus, I suspect that modemmanager is the root of the problem.

I have tried to run the modemmanager manually and the result is :
Failed to start modemmanager.service: Unit ModemManager.service is masked.

Does anyone know how to solve this issue so that I can use my broadband modem in my Jetson TX2

Thx,

dark_cly,

We don’t have modem tested on tx2 before. Other forum users may share their experience.

Hi WyneWWW,

Thank you for your reply.

But, do you have any clue why the modem manager service does not run on TX2 by default?
The modem manager service should be part of network manager.
Since the network manager works properly,
I do not have any clue why the modem manager is inactive and it cannot be activated.

Thx,

My status of ModemManager.sevrvice is active after boot up.

[sudo] password for nvidia:
● ModemManager.service - Modem Manager
Loaded: loaded (/lib/systemd/system/ModemManager.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-11-14 05:37:08 UTC; 40s ago
Main PID: 429 (ModemManager)
Tasks: 3
Memory: 5.8M
CPU: 51ms
CGroup: /system.slice/ModemManager.service
└─429 /usr/sbin/ModemManager

Could you share which BSP you are using?

You might also show the verbose lsusb of the modem. Perhaps it simply lacks the driver (USB can be more than one device on a single cable…the presence of a bulk storage device does not mean there is just that device).

If you run “lsusb” you will see an ID. An example might be something like “0955:7c18” (not really your case, but just for illustration). To get a verbose listing:

sudo lsusb -d 0955:7c18 -vvv

The most interesting part from this will be any “class” entry. If anything is “miscellaneous” (or perhaps “isochronous” in some locations), then you need a custom driver for that part of the hardware.

@WayneWWW,
Thank you for your reply

I am sorry I am not sure about the BSP.
But, I am currently using Jetson TX2 development kit.
I flashed the module using JetPack-L4T-3.3-linux-x64_b39.
After that I also build the kernel and install it on the module following the tutorial in GitHub - jetsonhacks/buildJetsonTX2Kernel: Build the NVIDIA Jetson TX2 Kernel on the device itself

So perhaps, the new kernel causes the modem manager to be inactive?

if that so, do you have any suggestion?

@linuxdev,

Thank you for your reply,

I run : lsusb -d 12d1:1506 -vvv
here is the result after executing:
For convinience reading, I also attached the text file of the output.

Bus 001 Device 008: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x12d1 Huawei Technologies Co., Ltd.
idProduct 0x1506 Modem/Networkcard
bcdDevice 1.02
iManufacturer 2 Technology
iProduct 1 Mobile
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 223
bNumInterfaces 5
bConfigurationValue 1
iConfiguration 3 Configuration
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 97
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 01 00 00
** UNRECOGNIZED: 06 24 06 00 00 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 98
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 04 24 02 02
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 06 24 06 01 01 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 118
iInterface 0
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 06 24 1a 00 01 1f
** UNRECOGNIZED: 0d 24 0f 04 0f 00 00 00 ea 05 03 00 01
** UNRECOGNIZED: 05 24 06 02 02
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 5
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 1
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 2
bInterfaceProtocol 118
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 32
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

is there any clue??
out.txt (8.45 KB)

Could you check the syslog after command “sudo service ModemManager start” ?

FYI, this is a “vendor specific class”, and so it must have a driver specific to the device…no generic driver will work. You will need to have that installed…and basically knowing which driver will be the hard part.

Also, I see this:

...
      iInterface              0 
      ** UNRECOGNIZED:  05 24 00 10 01
      ** UNRECOGNIZED:  06 24 1a 00 01 1f
      ** UNRECOGNIZED:  0d 24 0f 04 0f 00 00 00 ea 05 03 00 01
      ** UNRECOGNIZED:  05 24 06 02 02

…the above does not necessarily show it needs additional firmware, but I suspect this is the case.

The driver runs in the kernel, the firmware is uploaded into the device. The two in combination will probably be required. Have you researched to see what driver is needed, and if firmware is available?

Sometimes firmware and drivers are available directly from the Ubuntu package system, sometimes part or all of the software is needed from the vendor.

@WayneWWW

After executing the command, this is the last log from syslog:

Nov 16 02:56:58 tegra-ubuntu rsyslogd-2007: action ‘action 9’ suspended, next retry is Fri Nov 16 02:57:58 2018 [v8.16.0 try http://www.rsyslog.com/e/2007 ]
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: Error: Can’t initialize nvrm channel
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: message repeated 50 times: [ Error: Can’t initialize nvrm channel]
Nov 16 02:56:58 tegra-ubuntu NetworkManager[763]: [1542337018.8426] policy: auto-activating connection ‘wlan1-2’
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: Error: Can’t initialize nvrm channel
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: message repeated 11 times: [ Error: Can’t initialize nvrm channel]
Nov 16 02:56:58 tegra-ubuntu NetworkManager[763]: [1542337018.8958] policy: auto-activating connection ‘wlan1-2’
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: Error: Can’t initialize nvrm channel
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: message repeated 3 times: [ Error: Can’t initialize nvrm channel]
Nov 16 02:56:58 tegra-ubuntu NetworkManager[763]: [1542337018.9247] policy: auto-activating connection ‘wlan1-2’
Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: Error: Can’t initialize nvrm channel
Nov 16 02:57:11 tegra-ubuntu gnome-session[2334]: message repeated 427 times: [ Error: Can’t initialize nvrm channel]

But, I think there was no message related to the modem manager.

NB: the out from the command is

Failed to start ModemManager.service: Unit ModemManager.service is masked.

@linuxdev

At first, I also suspected the problem was with the driver or firmware.
But, since the device works well on Ubuntu 16.04 x86_64 without installing new driver or firmware, I think that the driver should be included in Ubuntu package system.

However, in my Jetson TX2 I cannot make it work.
I have also build new kernel to include related driver from Huawei which is available from the source, but it still does not work.
After further investigation I found that modem manager did not run on my Jetson TX2, thus I think that this was the root of the problem as I described in the beginning of my post.

Although, fixing the modem manager may not solve the problem if it is the driver problem.
But, if the modem manager does not work, I cannot confirm whether the problem is with the driver or not.

If you know what driver it is, then you can confirm by examining “/proc/config.gz”. Also, firmware is usually a separate install, and embedded systems do not install all of the drivers a PC will install. So for example, do you want to install all of the AMD PCIe graphics card drivers? All of the 10 gigabit NIC drivers? The Ubuntu install on the Jetson is minimal in comparison to what gets loaded onto a PC.

Is ModemManager not working because of your kernel or your device…?

@linuxdev

By running dmesg command, after changing the device from USB masss storage to modem, I found the following log:

huawei_cdc_ncm 1-2.3:1.2: MAC-Address: 0c:5b:8f:27:9a:64
[ 93.524195] huawei_cdc_ncm 1-2.3:1.2: setting rx_max = 16384
[ 93.530417] huawei_cdc_ncm 1-2.3:1.2: setting tx_max = 16384
[ 93.536274] huawei_cdc_ncm 1-2.3:1.2: NDP will be placed at end of frame for this device.
[ 93.544764] huawei_cdc_ncm 1-2.3:1.2: cdc-wdm0: USB WDM device
[ 93.550991] huawei_cdc_ncm 1-2.3:1.2 wwan0: register ‘huawei_cdc_ncm’ at usb-3530000.xhci-2.3, Huawei CDC NCM device, 0c:5b:8f:27:9

I can also bring the device up by executing the command sudo ifconfig wwan0 up.

wwan0 Link encap:Ethernet HWaddr 0c:5b:8f:27:9a:64
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

So it implies that the device uses huawei_cdc_ncm driver which is already available on the system.
Thus, I suspected the problem is not with the driver.

@WayneWWW

I think the ModemManager may not work because of the kernel.
I have not tested the ModemManager right after flashing the module with Jetpack.
But, according to your previous reply, the ModemManager works well on your system.

I cannot understand why the modem manager just dead on my system.
As I know the source code of the kernel which I installed is downloaded from official nvidia site.

I saw there are some nvrm error in your log.

“Nov 16 02:56:58 tegra-ubuntu gnome-session[2334]: Error: Can’t initialize nvrm channel”

Is this coming after starting ModemManager?

If it works well on original jetpack, could you share the method/patch of what you have done in kernel?

Also, could you share the result of “lsmod” on your device(that one with your kernel image).

I am sorry WayneWWW, I think I have made you confused.
I have not tested my modem on the original jetpack. I just referred to your previous answer.

no, the error was not produced after starting the ModemManager

For building the kernel I just followed the tutorial in

I did enable some drivers but I did not really make any modification on kernel.
Below the result of “lsmod”

Module Size Used by
fuse 83099 3
8812au 1446791 0
ipt_MASQUERADE 2115 1
nf_nat_masquerade_ipv4 2931 1 ipt_MASQUERADE
iptable_nat 2285 1
nf_nat_ipv4 6554 1 iptable_nat
xt_addrtype 3298 2
iptable_filter 2119 1
ip_tables 18322 2 iptable_filter,iptable_nat
xt_conntrack 3551 1
nf_nat 16285 2 nf_nat_ipv4,nf_nat_masquerade_ipv4
br_netfilter 13923 0
overlay 33899 0
pci_tegra 60337 0
bonding 126662 0
bluedroid_pm 11195 0

dark_cly,

It would be better if you still share the dmesg/syslog with us.

@WayneWWW

I have found something interesting.
I cannot run the modemmanager as service using the command:

sudo systemctl start ModemManager.service

However, I can run the modem manager successfully using the command:

sudo /usr/sbin/ModemManager

After running the modem manager, I can use my device to create a broadband connection and it works.

Do you have any clue about this?

This is weird. I can enable it with your command.

Nov 19 10:01:58 tegra-ubuntu systemd[1]: Starting Modem Manager...
Nov 19 10:01:58 tegra-ubuntu ModemManager[28510]: <info>  ModemManager (version 1.4.12) starting in system bus...
Nov 19 10:01:58 tegra-ubuntu systemd[1]: Started Modem Manager.

How about kernel log? Is there any error log after systemctl command?
Maybe driver triggers some error.