Linux Driver RG255C-GL for Linux 6.1.0

Hello, can you please send me the linux driver for the Module RG255C-GL

Are you sure it is not supported by the standard Linux drivers?
Could you please show the output of cat /sys/kernel/debug/usb/devices

Thanks for your reply. Here is the output:


T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
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= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
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=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.10 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2109 ProdID=3431 Rev= 4.20
S:  Product=USB2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2c7c ProdID=0316 Rev= 5.15
S:  Manufacturer=Quectel
S:  Product=RG255C-GL
S:  SerialNumber=1d01e7c3
C:* #Ifs= 4 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=50 Driver=(none)
E:  Ad=86(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 4
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
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=01 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=0451 ProdID=9261 Rev= 1.00
S:  Manufacturer=Texas Instruments
S:  Product=TUSB9261 USB3.0 to SATA Bridge
S:  SerialNumber=BD9FAAA802427D9C171151410407E5306
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=896mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=ff(vend.) Sub=00 Prot=ff MxPS= 9 #Cfgs=  1
P:  Vendor=0424 ProdID=7800 Rev= 3.00
S:  Manufacturer=Microchip
S:  Product=LAN7800
S:  SerialNumber=001EC0E12C54
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=896mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=lan78xx
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
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= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=fe9c0000.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=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=0424 ProdID=2514 Rev= b.b3
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  2mA
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

Looks like no driver is detected automatically

1 Like

This vid:pid is not yet supported by the standard drivers as I can see.

That is probably your QMI interface, but that is very uncommon combination.

What you can do:
# echo "2c7c 0316" > /sys/bus/usb-serial/drivers/option1/new_id
that should expose a few serial interfaces /dev/ttyUSBx
Find the AT command port (that is probably /dev/ttyUSB2) and switch the modem to MBIM, assuming this mode is supported.
Check the current mode first with AT+QCFG="usbnet" then switch with AT+QCFG="usbnet",2
MBIM driver will pick the interface using class/subclass and not vid:pid.
Run cat /sys/kernel/debug/usb/devices again, this time it should provide slightly different output.

As a precaution, check the Ethernet mode settings:

AT+QCFG="data_interface"
AT+QCFG="pcie/mode"

Hi, I’ve tried your solution, unfortunately, I don’t have this file

/sys/bus/usb-serial/drivers/option1/new_id

Do I need a certain kernel module to be loaded?

# modprobe option
then see if the file is there

Thanks.

this worked so far.

Now i’ve see a wwan0 device, but unfortunatley, I get stack traces in dmesg now, once I try to set the link up:

[ 1077.862648] ------------[ cut here ]------------
[ 1077.862687] NETDEV WATCHDOG: wwan0 (cdc_mbim): transmit queue 0 timed out
[ 1077.862754] WARNING: CPU: 3 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x278/0x280
[ 1077.862790] Modules linked in: option usb_wwan usbserial cdc_mbim cdc_wdm cdc_ncm cdc_ether rfcomm snd_seq_dummy snd_hrtimer snd_seq snd_seq_device cmac algif_hash aes_arm64 aes_generic algif_skcipher af_alg bnep joydev hci_uart btbcm bluetooth mipi_dsi(O) als_ltr30x(O) brcmfmac industrialio_triggered_buffer kfifo_buf industrialio mcp251xfd lis331dlh_i2c(O) brcmutil bcm2835_v4l2(C) can_dev cfg80211 videobuf2_vmalloc rpivid_hevc(C) bcm2835_codec(C) v4l2_mem2mem ecdh_generic ecc bcm2835_isp(C) bcm2835_mmal_vchiq(C) videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common raspberrypi_hwmon videodev binfmt_misc rfkill libaes vc_sm_cma(C) snd_bcm2835(C) raspberrypi_gpiomem mc sg nvmem_rmem uio_pdrv_genirq uio i2c_dev dm_mod fuse ip_tables x_tables ipv6 vc4 gpio_pca953x pinctrl_mcp23s08_i2c rtc_pcf85063 pinctrl_mcp23s08 rtc_pcf8563 regmap_i2c snd_soc_hdmi_codec drm_display_helper cec drm_dma_helper drm_kms_helper syscopyarea sysfillrect v3d gpu_sched drm_shmem_helper sysimgblt
[ 1077.863187]  fb_sys_fops i2c_brcmstb drm drm_panel_orientation_quirks spi_bcm2835 snd_soc_core i2c_bcm2835 snd_compress snd_pcm_dmaengine snd_pcm snd_timer snd backlight gpio_keys
[ 1077.863260] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G         C O       6.1.0-rpi7-rpi-v8 #1  Debian 1:6.1.63-1+rpt1
[ 1077.863275] Hardware name: Raspberry Pi Compute Module 4 Rev 1.1 (DT)
[ 1077.863283] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 1077.863297] pc : dev_watchdog+0x278/0x280
[ 1077.863311] lr : dev_watchdog+0x278/0x280
[ 1077.863323] sp : ffffffc00801bdc0
[ 1077.863329] x29: ffffffc00801bdc0 x28: ffffffd1ee2612c4 x27: ffffffc00801bee0
[ 1077.863353] x26: ffffffd1ee945008 x25: 0000000000000000 x24: ffffffd1eec6d898
[ 1077.863374] x23: ffffffd1eec66000 x22: 0000000000000000 x21: ffffff81030ec3dc
[ 1077.863394] x20: ffffff81030ec000 x19: ffffff81030ec488 x18: ffffffffffffffff
[ 1077.863414] x17: ffffffb010677000 x16: ffffffc008018000 x15: ffffffc00801b9b0
[ 1077.863433] x14: ffffffd1eee98991 x13: 74756f2064656d69 x12: 7420302065756575
[ 1077.863453] x11: 712074696d736e61 x10: ffffffd1eece47e8 x9 : ffffffd1ed90eb68
[ 1077.863473] x8 : 00000000ffffefff x7 : ffffffd1eece47e8 x6 : 80000000fffff000
[ 1077.863493] x5 : ffffff81fefbea10 x4 : 0000000000000003 x3 : 0000000000000004
[ 1077.863512] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffff81002c3e00
[ 1077.863532] Call trace:
[ 1077.863538]  dev_watchdog+0x278/0x280
[ 1077.863552]  call_timer_fn+0x3c/0x1cc
[ 1077.863569]  __run_timers+0x258/0x314
[ 1077.863582]  run_timer_softirq+0x28/0x4c
[ 1077.863595]  __do_softirq+0x170/0x468
[ 1077.863607]  ____do_softirq+0x18/0x24
[ 1077.863620]  call_on_irq_stack+0x24/0x54
[ 1077.863633]  do_softirq_own_stack+0x24/0x3c
[ 1077.863647]  __irq_exit_rcu+0xb8/0xe0
[ 1077.863665]  irq_exit_rcu+0x18/0x40
[ 1077.863683]  el1_interrupt+0x38/0x70
[ 1077.863700]  el1h_64_irq_handler+0x18/0x2c
[ 1077.863714]  el1h_64_irq+0x64/0x68
[ 1077.863724]  arch_cpu_idle+0x18/0x2c
[ 1077.863739]  default_idle_call+0x6c/0x1a8
[ 1077.863756]  do_idle+0x260/0x2a0
[ 1077.863774]  cpu_startup_entry+0x40/0x44
[ 1077.863794]  secondary_start_kernel+0x130/0x154
[ 1077.863815]  __secondary_switched+0xb0/0xb4
[ 1077.863833] ---[ end trace 0000000000000000 ]---

Also, I can’t access /dev/ttyUSB2 with AT commands anymore. The interface is present, but doesn’t react to AT anymore

Please show what cat /sys/kernel/debug/usb/devices gives you now.

:/home/sl# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
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= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
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=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.10 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=2109 ProdID=3431 Rev= 4.20
S:  Product=USB2.0 Hub
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.01 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=2c7c ProdID=0316 Rev= 5.15
S:  Manufacturer=Quectel
S:  Product=RG255C-GL
S:  SerialNumber=1d01e7c3
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
A:  FirstIf#= 6 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
E:  Ad=84(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
I:  If#= 7 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:* If#= 7 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 4
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=0000:01:00.0
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=01 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=0451 ProdID=9261 Rev= 1.00
S:  Manufacturer=Texas Instruments
S:  Product=TUSB9261 USB3.0 to SATA Bridge
S:  SerialNumber=BD9FAAA802427D9C171151410407E5306
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=896mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=83(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=02 Dev#=  3 Spd=5000 MxCh= 0
D:  Ver= 3.10 Cls=ff(vend.) Sub=00 Prot=ff MxPS= 9 #Cfgs=  1
P:  Vendor=0424 ProdID=7800 Rev= 3.00
S:  Manufacturer=Microchip
S:  Product=LAN7800
S:  SerialNumber=001EC0E12C54
C:* #Ifs= 1 Cfg#= 1 Atr=a0 MxPwr=896mA
I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=ff Driver=lan78xx
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  16 Ivl=4ms

T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
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= 6.01
S:  Manufacturer=Linux 6.1.0-rpi7-rpi-v8 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=fe9c0000.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=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480  MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=02 MxPS=64 #Cfgs=  1
P:  Vendor=0424 ProdID=2514 Rev= b.b3
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  2mA
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

That looks good to me and /dev/ttyUSB2 should respond to AT commands. Maybe you should try to re-connect the modem to the host system.
If the issue with MBIM persists, you can try switching from MBIM to ECM (again, assuming it is supported by this module) by sending AT+QCFG="usbnet",1 to the modem.
dmesg will tell you the new interface name and you will need to run a DHCP client on it.

Hi, I’ve tried rebooting the system multiple times, but I don’t get any AT interface anymore.

root@raspberrypi:/home/sl# lsusb -t
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
    |__ Port 4: Dev 3, If 0, Class=Vendor Specific Class, Driver=lan78xx, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=option, 480M
        |__ Port 1: Dev 3, If 1, Class=Vendor Specific Class, Driver=option, 480M
        |__ Port 1: Dev 3, If 2, Class=Vendor Specific Class, Driver=option, 480M
        |__ Port 1: Dev 3, If 6, Class=Communications, Driver=cdc_mbim, 480M
        |__ Port 1: Dev 3, If 7, Class=CDC Data, Driver=cdc_mbim, 480M
[  335.180906] usbcore: registered new interface driver usbserial_generic
[  335.181116] usbserial: USB Serial support registered for generic
[  335.198148] usbcore: registered new interface driver option
[  335.198365] usbserial: USB Serial support registered for GSM modem (1-port)
[  337.474026] option 1-1.1:1.0: GSM modem (1-port) converter detected
[  337.474468] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB0
[  337.474621] option 1-1.1:1.1: GSM modem (1-port) converter detected
[  337.474919] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB1
[  337.479222] option 1-1.1:1.2: GSM modem (1-port) converter detected
[  337.479622] usb 1-1.1: GSM modem (1-port) converter now attached to ttyUSB2

dmesg is showing only three interfaces now, instead of four.

Also commands like mbimcli don’t work:

 mbimcli --device=/dev/cdc-wdm0 --device-open-proxy --query-device-caps


error: couldn't open the MbimDevice: Transaction timed out

# echo "2c7c 0316" > /sys/bus/usb-serial/drivers/option1/new_id
needs to be manually run after each reboot or added to some startup script

Make sure the name is correct: ls -l /dev/cdc* and there is no other program like ModemManager trying to access the modem.

Hi, have you managed to solve this issue?

I have what seems to be the same problem. I have RG255C-GL on Debian, kernel 6.1.0-13-amd64.
In MBIM mode I am getting

#  mbimcli --device=/dev/cdc-wdm0 --device-open-proxy --query-device-caps
error: couldn't open the MbimDevice: Transaction timed out

If I bind the option driver and run ModemManager, I get up to

ModemManager[9970]: <debug> [1713444478.775805] [ttyUSB2/at] device open count is 2 (close)
ModemManager[9970]: <debug> [1713444508.753955] [modem1] running registration checks (CS: 'yes', PS: 'yes', EPS: 'no', 5GS: 'no')
ModemManager[9970]: <debug> [1713444508.754074] [ttyUSB2/at] device open count is 3 (open)
ModemManager[9970]: <debug> [1713444508.754162] [ttyUSB2/at] --> 'AT+CREG?<CR>'
ModemManager[9970]: <debug> [1713444508.765782] [ttyUSB2/at] <-- '<CR><LF>ERROR<CR><LF>'
ModemManager[9970]: <debug> [1713444508.765938] [ttyUSB2/at] operation failure: 100 (Unknown error)
ModemManager[9970]: <debug> [1713444508.766023] [ttyUSB2/at] device open count is 4 (open)
ModemManager[9970]: <debug> [1713444508.766089] [ttyUSB2/at] device open count is 3 (close)
ModemManager[9970]: <debug> [1713444508.766170] [ttyUSB2/at] --> 'AT+CGREG?<CR>'
ModemManager[9970]: <debug> [1713444508.777957] [ttyUSB2/at] <-- '<CR><LF>ERROR<CR><LF>'
ModemManager[9970]: <debug> [1713444508.778013] [ttyUSB2/at] operation failure: 100 (Unknown error)
ModemManager[9970]: <debug> [1713444508.778036] [modem1] couldn't refresh 3GPP registration status: Unknown error
ModemManager[9970]: <debug> [1713444508.778051] [ttyUSB2/at] device open count is 2 (close)
ModemManager[9970]: <debug> [1713444538.727050] [modem1] running registration checks (CS: 'yes', PS: 'yes', EPS: 'no', 5GS: 'no')

When I try without MM I get

AT+CREG?
ERROR

Does the modem need perhaps some non-standard initialization that MM doesn’t perform?

OK, so meanwhile I have got the AT command manual and this is expected behaviour as RG255C does not support +CREG or +CGREG, only +CEREG and +C5GREG.

So the problem seems to be that ModemManager does not recognize RG255C as LTE&5G capable as seen from here:

Anybody has any ideas?

Get rid of MM as I suggested earlier and work on the network registration issue. +CEREG is all what you need in LTE network.

I’m experiencing an issue with the RG255C-GL on Linux and am looking for available drivers. Has anyone found a workaround? I would greatly appreciate any information or suggestions, as I am planning to install it on the OPNsense.

Linux driver workaround is already explained above.
OPNsense is based on FreeBSD where support for modems is historically worse than in Linux.

Is it possible with this module to get two devices for AT commands, like with the EC25?
/dev/ttyUSB2 responds to AT commands, but I need a second one when my ppp connection blocks this port and none of the other ports responds.

Dear @vogel
For RG255C, it doesn’t have modem port, so it doesn’t have two ports for AT command.

1 Like

Thanks! Are there 5G Modules with a modem port?