Driver RM502Q-AE for Jetson AGX Orin

Hello everyone,
I am working with module Quectel RM502Q-AE in Jetson AGX Orin, which uses:
Ubuntu 20.04.6 LTS
NVIDIA Jetson Linux 35.4.1
Jetpack 5.10
Did anyone have the driver of RM502Q-AE supports Jetpack 5.10. And how to config this driver. (need to modify kernel or not…?).
Thank you very much, all!

I am sure the default driver already support the Quectel RM502Q.
No need to modify anthing

Thank you for your answer. And I am wondering:

  1. If we connect to the Internet (commercial SIM card), how can we activate the connection to the Internet.
    How we can the IP address of the SIM card?
  2. If we use the private 5G network, how can we easily config and get the IP address.
    Thank you in advanced

You could try the ModemManager which is already built in on Ubuntu, if it does not work, please try the Quectel QconnectManager(quectel-CM) to set up data call.
What you need to do with the quectel-CM:

  1. Configure the modem with the right APN with AT command
    AT+CGDCONT=1,“IP”,“APN”
  2. Start the quectel-CM
    ./quectel-CM

Sorry for replying late. I had pause for two months, now I come back to this project.
I am sorry, but I realized that when I connected the Quectel RM502Q-EA to Jetson Orin through USB3.0 cable, Jetson Orin only support the drivers RNDIS or ECM, not QMI_WWAN.
So I am asking you how to install this driver for jetson Orin with version of jepack I did mentioned above, or you can send me the driver through email.
Thanks in advanced!

Please provide the info

lsusb
lsusb -t
cat /sys/kernel/debug/usb/devices

If the modem is connected with the Jetson Orin

~$ lsusb
Bus 002 Device 004: ID 2c7c:0800 Quectel Wireless Solutions Co., Ltd.
Bus 002 Device 002: ID 0bda:0420 Realtek Semiconductor Corp. 4-Port USB 3.0 Hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 045e:07b2 Microsoft Corp. 2.4GHz Transceiver v8.0 used by mouse Wireless Desktop 900
Bus 001 Device 004: ID 05ac:0256 Apple, Inc.
Bus 001 Device 003: ID 0bda:5420 Realtek Semiconductor Corp. 4-Port USB 2.0 Hub
Bus 001 Device 002: ID 13d3:3549 IMC Networks Bluetooth Radio
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
~$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 3: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 4: Dev 4, If 0, Class=Miscellaneous Device, Driver=rndis_host, 5000M
|__ Port 4: Dev 4, If 1, Class=CDC Data, Driver=rndis_host, 5000M
|__ Port 4: Dev 4, If 2, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 4, If 3, Class=Vendor Specific Class, Driver=, 5000M
|__ Port 4: Dev 4, If 4, Class=Vendor Specific Class, Driver=option, 5000M
|__ Port 4: Dev 4, If 5, Class=Vendor Specific Class, Driver=option, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 3: Dev 2, If 0, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 3: Dev 2, If 1, Class=Wireless, Driver=rtk_btusb, 12M
|__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 3: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 5, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 2: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M

sudo cat /sys/kernel/debug/usb/devices
[sudo] password for unobk206:

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 4
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 5.10
S: Manufacturer=Linux 5.10.120-tegra xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=3610000.xhci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
D: Ver= 1.00 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=13d3 ProdID=3549 Rev= 0.00
S: Manufacturer=Realtek
S: Product=Bluetooth Radio
S: SerialNumber=00e04c000001
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=81(I) Atr=03(Int.) MxPS= 16 Ivl=1ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 0 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 0 Ivl=1ms
I: If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 9 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 9 Ivl=1ms
I: If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 17 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 17 Ivl=1ms
I: If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 25 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 25 Ivl=1ms
I: If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 33 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 33 Ivl=1ms
I: If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=rtk_btusb
E: Ad=03(O) Atr=01(Isoc) MxPS= 49 Ivl=1ms
E: Ad=83(I) Atr=01(Isoc) MxPS= 49 Ivl=1ms

T: Bus=01 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#= 3 Spd=480 MxCh= 4
D: Ver= 2.10 Cls=09(hub ) Sub=00 Prot=02 MxPS=64 #Cfgs= 1
P: Vendor=0bda ProdID=5420 Rev= 1.40
S: Manufacturer=Generic
S: Product=4-Port USB 2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=01 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms
I:* If#= 0 Alt= 1 #EPs= 1 Cls=09(hub ) Sub=00 Prot=02 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=256ms

T: Bus=01 Lev=02 Prnt=03 Port=01 Cnt=01 Dev#= 4 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=05ac ProdID=0256 Rev= 3.10
S: Manufacturer=CX
S: Product=2.4G Wireless Receiver
C:* #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=2ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=2ms

T: Bus=01 Lev=02 Prnt=03 Port=02 Cnt=02 Dev#= 5 Spd=12 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=045e ProdID=07b2 Rev= 7.46
S: Manufacturer=Microsoft
S: Product=Microsoft® 2.4GHz Transceiver v8.0
C:* #Ifs= 3 Cfg#= 1 Atr=a0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 10 Ivl=1ms
I:* If#= 2 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=83(I) Atr=03(Int.) MxPS= 32 Ivl=1ms

T: Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=10000 MxCh= 4
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 3.10 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=1d6b ProdID=0003 Rev= 5.10
S: Manufacturer=Linux 5.10.120-tegra xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=3610000.xhci
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms

T: Bus=02 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 2 Spd=10000 MxCh= 4
D: Ver= 3.20 Cls=09(hub ) Sub=00 Prot=03 MxPS= 9 #Cfgs= 1
P: Vendor=0bda ProdID=0420 Rev= 1.40
S: Manufacturer=Generic
S: Product=4-Port USB 3.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=13(Int.) MxPS= 2 Ivl=16ms

T: Bus=02 Lev=02 Prnt=02 Port=03 Cnt=01 Dev#= 4 Spd=5000 MxCh= 0
D: Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs= 1
P: Vendor=2c7c ProdID=0800 Rev= 4.14
S: Manufacturer=Quectel
S: Product=RM502Q-AE
S: SerialNumber=c3874809
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
A: FirstIf#= 0 IfCount= 2 Cls=ef(misc ) Sub=04 Prot=01
I:* If#= 0 Alt= 0 #EPs= 1 Cls=ef(misc ) Sub=04 Prot=01 Driver=rndis_host
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
E: Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=86(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=85(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=88(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=87(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

I am sorry for replying late, but these are the information that you asked.

It means that the modem is in RNDIS mode.

It is not the recommended way.
Please set the modem to qmi mode.

AT+QCFG=“usbnet”,0

Thank you for your replying.
I am using this mode, but I did not notice that is also QMI. Btw, thanks a lot!
AT+QCFG=“usbnet”,0 driver type is NDIS;
AT+QCFG=“usbnet”,1 The driver type is ECM;
AT+QCFG=“usbnet”,2 The driver type is MBIM; (RM5XXQ support)
AT+QCFG=“usbnet”,3 The driver type is RNDIS
AT+QCFG=“usbnet”,5 The driver type is NCM;

Hello Phi, Bean
I was looking into the forums to find something relevant to my occasion and landed on this topic. I am also running a Orin Nano on 5.15.136-tegra (Ubuntu 22.04) and trying to make it work with a RM530N-GL module. I have looked into the solutions mentioned here but I’m not sure if I’m doing things correctly. I can see the module listed through “lsusb” and can run AT commands, however, I don’t see any interface related to the module (such as wwan0). Also, it seems that there is no cdc-wdm which I guess is related to the qmi interface. In other machines/linux distributions I would use them to create a static wan connection but I’m not sure what approach to take on the Nano. Any recommendation ? Is there anything that could possibly be wrong ? Thank you

Please show

lsusb -t

dmesg | grep qmi

Hello Bean,
Thank you very much for your quick response.

  1. lsusb -t :
    /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
    |__ Port 3: Dev 6, If 0, Class=Vendor Specific Class, Driver=option, 10000M
    |__ Port 3: Dev 6, If 1, Class=Vendor Specific Class, Driver=option, 10000M
    |__ Port 3: Dev 6, If 2, Class=Vendor Specific Class, Driver=option, 10000M
    |__ Port 3: Dev 6, If 3, Class=Vendor Specific Class, Driver=option, 10000M
    |__ Port 3: Dev 6, If 4, Class=Vendor Specific Class, Driver=option, 10000M
    /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
    |__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
    |__ Port 4: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 4: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
    |__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M

  2. dmesg | grep qmi : doesn’t return anything

I see.
It is in PCIE mode and so we cannot see the usbnet interface.
You can send AT

AT+QCFG=“data_interface”,0,0

It will take effect after reboot.

I did run it through minicom, but I received an error while the module was rebooting and it froze, (I couldn’t exit the minicom terminal):

at+qcfg=“data_interface”,0,0

OK
at+cfun=1,1

OK

+CPIN: READY

+QUSIM: 1

+CFUN: 1

+QIND: SMS DONE
AT
OK
AT
OK

+QIND: PB DONE
ATATE0
OK

OK

OK

+GCAP: +CGSM

OK

+CPIN: READY

OK

OK

ERROR

I continued in a different terminal, restarted the Orin device itself but nothing seems to have changed, lsusb and dmseg give the same results.

It twill ake effect after reboot.

I get this after the reboot:

lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 3: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 3, If 3, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 3, If 4, Class=Vendor Specific Class, Driver=, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M

Still nothing from dmesg

OK the usbnet interface come out. But there is no driver probe.
You can send AT

AT+QCFG=“usbnet”,2

It will also take effect after reboot.

Restarted and I can see that there is information on the driver now :

lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 4, If 1, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 4, If 2, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 4, If 3, Class=Vendor Specific Class, Driver=option, 10000M
|__ Port 3: Dev 4, If 8, Class=Communications, Driver=, 10000M
|__ Port 3: Dev 4, If 9, Class=CDC Data, Driver=, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 5, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 4: Dev 5, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 2: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
|__ Port 3: Dev 3, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 3: Dev 3, If 1, Class=Wireless, Driver=btusb, 12M

Still no information on dmesg

OK.
So there is no cdc-mbim built-in.
Please check

ls  /sys/bus/usb/drivers/

If you can recompile the Linux kernel, you can add cdc_mbim into the kernel.