Using RG255C GL mounted on 5G m2evb board with linux

Hi there.
I want to connect my RG255C GL mounted on M2 evb board. I want to connect my UE internet. It is not shown in the network. The IP doesnot show with command ip a . I am using ubuntu 22.
I want to know which tool should i use to get connected my UE to the network interent.
In window i dont have any problem. The pdu session is established when i connect the cellular network.
In linux it is not straightforward. My UE is recognized by the host computer but when it comes to connection it doesnt show anything.

First of all, is the RG255C recognized in the Ubuntu 22? Please check
lsusb and lsusb -t
If it is reconigzed, it need the Linux driver qmi_wwan and datacall tool quectel-CM.

Thankyou for your response.
Do i have to separately download this from some repo.
My quectel modem is recognized. I can see it in lsusb.
Just incase, can you direct me on how i should install the exact drivers.

For the Linux driver, you need to modify the qmi_wwan.c and recompile the qmi_wwan.ko.


diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 9bd1457..b92889d 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1086,8 +1086,9 @@ static const struct usb_device_id products[] = {

{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0620)}, /* Quectel EM160R-GL */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0800)}, /* Quectel RM500Q-GL */
{QMI_MATCH_FF_FF_FF(0x2c7c, 0x0801)}, /* Quectel RM520N */
-
+ {QMI_QUIRK_SET_DTR(0x2c7c, 0x0316, 3)}, /* Quectel RG255C */
/* 3. Combined interface devices matching on interface number */
+
{QMI_FIXED_INTF(0x0408, 0xea42, 4)}, /* Yota / Megafon M100-1 */
{QMI_FIXED_INTF(0x05c6, 0x6001, 3)}, /* 4G LTE usb-modem U901 */
{QMI_FIXED_INTF(0x05c6, 0x7000, 0)},

diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index b5ee851..31da72d 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c

@@ -641,6 +641,7 @@ static void option_instat_callback(struct urb *urb);
static const struct usb_device_id option_ids[] = {
+ { USB_DEVICE_INTERFACE_CLASS(QUECTEL_VENDOR_ID, 0x0316, 0xff), .driver_info = RSVD(3) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) },
{ USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) },

Hi i checked with the current configuration.
What does the 3 suggest in configuration. Is it an interface for internet. Does rg255cgl work with QMI or MBIM. I am still stuck at getting the pdu sesssion.

If you need any output let me know in the chat i will send you.
Kindly mention the respective cmmads as well.

The USB interface 3 is for usbnet qmi_wwan.

I am still facing an issue. Can you spot what i am missing?

cwc@cwc-ThinkPad-P15-Gen-2i:~$ uname -r
6.8.0-60-generic

System Details

Device: Quectel RG255C

Kernel Version: 6.8.0-60-generic (custom build)

Distro: Ubuntu 22.04+

USB ID: 2c7c:0316

Step 1: Build the qmi_wwan module
make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/usb modules

Step 2: Install the rebuilt modulesudo
cp drivers/net/usb/qmi_wwan.ko /lib/modules/$(uname -r)/kernel/drivers/net/usb/qmi_wwan.ko
sudo depmod -a
sudo modprobe -r qmi_wwan
sudo modprobe qmi_wwan

Step 3: Rebind the USB device (Bus 003 Device 008)
echo ‘3-1’ | sudo tee /sys/bus/usb/drivers/usb/unbind
sleep 2
echo ‘3-1’ | sudo tee /sys/bus/usb/drivers/usb/bind

root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# lsusb | grep 2c7c

Bus 003 Device 008: ID 2c7c:0316 Quectel Wireless Solutions Co., Ltd. RG255C-GL

Bus 003 Device 008: ID 2c7c:0316 Quectel Wireless Solutions Co., Ltd. RG255C-GL

sudo lsusb -vd 2c7c:0316 | grep -E ‘InterfaceNumber|bInterfaceClass|iInterface’
bInterfaceNumber 0
bInterfaceClass 255 Vendor Specific Class
iInterface 0
bInterfaceNumber 1
bInterfaceClass 255 Vendor Specific Class
iInterface 0
bInterfaceNumber 2
bInterfaceClass 255 Vendor Specific Class
iInterface 6 CDEV Serial
bInterfaceNumber 8
bInterfaceClass 2 Communications
iInterface 7 CDC Ethernet Control Model (ECM)
bInterfaceNumber 9
bInterfaceClass 10 CDC Data
iInterface 0
bInterfaceNumber 9
bInterfaceClass 10 CDC Data
iInterface 8 CDC Ethernet Data

  root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# lsmod | grep -E 'qmi_wwan|cdc|usbnet|option'

qmi_wwan 40960 0
cdc_wdm 28672 1 qmi_wwan
usbnet 61440 1 qmi_wwan
mii 20480 1 usbnet
option 61440 0
usb_wwan 24576 1 option
usbserial 69632 2 usb_wwan,option

root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# ip link show
ip link show wwan0
ip link show wwx*
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp11s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 84:a9:38:0c:ae:c2 brd ff:ff:ff:ff:ff:ff
3: wlp9s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 70:cd:0d:da:39:64 brd ff:ff:ff:ff:ff:ff
5: wwx3effc5b705a9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 3e:ff:c5:b7:05:a9 brd ff:ff:ff:ff:ff:ff
Device “wwan0” does not exist.
Device “wwx*” does not exist.

root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# ls /dev/cdc-wdm*
/dev/cdc-wdm1

root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# sudo qmicli -d /dev/cdc-wdm1 --dms-get-manufacturer
error: couldn’t create client for the ‘dms’ service: CID allocation failed in the CTL client: Transaction timed out
root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# sudo qmicli -d /dev/cdc-wdm1 --device-open-proxy --dms-get-manufacturer
error: couldn’t create client for the ‘dms’ service: CID allocation failed in the CTL client: Transaction timed out

root@cwc-ThinkPad-P15-Gen-2i:/home/cwc/Downloads/linux-6.8/drivers/usb/serial# sudo lsof /dev/cdc-wdm1
lsof: WARNING: can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
lsof: WARNING: can’t stat() fuse.portal file system /run/user/1000/doc
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
qmi-proxy 107222 root 7u CHR 180,1 0t0 1176 /dev/cdc-wdm

AT COMMANDS OUTPUT

Welcome to minicom 2.8

OPTIONS: I18n
Port /dev/ttyUSB2, 15:16:11

Press CTRL-A Z for help on special keys

ATI # Show module model, firmware version
Quectel
RG255C-GL
Revision: RG255CGLABR01A04M4G

ERROR
AT+CGMR # Same as above (sometimes)
ERROR
AT+QENG=“servingcell”
+QENG: “servingcell”,“NOCONN”,“NR5G-SA”,“FDD”,001,01,000BC614E,0,1,423130,1,3,-50,-10,35,0,-

OK
AT+QCSQ
+QCSQ: “NR5G”,-50,36,-10

OK
AT+QRSRP
+QRSRP: -50,-50,NR5G

OK
AT+CGDCONT?
+CGDCONT: 1,“IP”,“oai”,“0.0.0.0”,0,0,0,0,“”,0
+CGDCONT: 2,“IP”,“”,“0.0.0.0”,0,0,0,0,“”,0

OK
AT+CPIN
ERROR
AT+CPIN?
+CPIN: READY

OK
AT+CIMI
001010000000052

I think
wwx3effc5b705a9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 3e:ff:c5:b7:05:a9 brd ff:ff:ff:ff:ff:ff
might be the wlan0.
It is the GRUB that change the name.
Please show me
lsusb -t

Please run the quectel-CM.

q_drivers/Quectel_QConnectManager_Linux_V1.6.7 at master · QuectelWB/q_drivers

root@cwc-ThinkPad-P15-Gen-2i:~/linux-6.8# lsusb -t
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 20000M/x2
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 1: Dev 9, If 8, Class=Communications, Driver=, 480M
|__ Port 1: Dev 9, If 2, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 1: Dev 9, If 0, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 1: Dev 9, If 9, Class=CDC Data, Driver=, 480M
|__ Port 1: Dev 9, If 1, Class=Vendor Specific Class, Driver=option, 480M
|__ Port 3: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
|__ Port 4: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
|__ Port 4: Dev 3, If 2, Class=Application Specific Interface, Driver=, 480M
|__ Port 7: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 7: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 9: Dev 5, If 0, Class=Chip/SmartCard, Driver=, 12M
|__ Port 14: Dev 6, If 0, Class=Wireless, Driver=btusb, 12M
|__ Port 14: Dev 6, If 1, Class=Wireless, Driver=btusb, 12M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M

Error in Running quectel CM

root@cwc-ThinkPad-P15-Gen-2i:~/q_drivers/Quectel_QConnectManager_Linux_V1.6.7# make clean
make
rm -f quectel-CM
gcc -O2 -Wall -lpthread main.c QmiWwanCM.c QMIThread.c GobiNetCM.c util.c device.c atc.c at_tok.c atchannel.c QCQMUX.c -o quectel-CM
QmiWwanCM.c: In function ‘ComposeQCTLMsg’:
QmiWwanCM.c:37:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
37 | pRequest->QMIHdr.IFType = USB_CTL_MSG_TYPE_QMI;
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:38:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
38 | pRequest->QMIHdr.CtlFlags = 0x00;
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:39:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
39 | pRequest->QMIHdr.QMIType = QMUX_TYPE_CTL;
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:40:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
40 | pRequest->QMIHdr.ClientId= 0x00;
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:42:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
42 | pRequest->CTLMsg.QMICTLMsgHdr.CtlFlags = QMICTL_FLAG_REQUEST;
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:43:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
43 | pRequest->CTLMsg.QMICTLMsgHdr.TransactionId = GetQCTLTransactionId();
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:44:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
44 | pRequest->CTLMsg.QMICTLMsgHdr.QMICTLType = cpu_to_le16(QMICTLType);
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:48:17: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
48 | pRequest->CTLMsg.QMICTLMsgHdr.Length = cpu_to_le16(0x0000);
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:46:17: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
46 | pRequest->CTLMsg.QMICTLMsgHdr.Length = cpu_to_le16(customQctlMsgFunction(&pRequest->CTLMsg, arg) - sizeof(QCQMICTL_MSG_HDR));
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:176,
from /usr/include/stdlib.h:395,
from QMIThread.h:54,
from QmiWwanCM.c:17:
QmiWwanCM.c:50:63: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
50 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->CTLMsg.QMICTLMsgHdr.Length) + sizeof(QCQMICTL_MSG_HDR) + sizeof(QCQMI_HDR) - 1);
| ^~
QmiWwanCM.c:50:31: note: in expansion of macro ‘cpu_to_le16’
50 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->CTLMsg.QMICTLMsgHdr.Length) + sizeof(QCQMICTL_MSG_HDR) + sizeof(QCQMI_HDR) - 1);
| ^~~~~~~~~~~
QmiWwanCM.c:50:43: note: in expansion of macro ‘le16_to_cpu’
50 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->CTLMsg.QMICTLMsgHdr.Length) + sizeof(QCQMICTL_MSG_HDR) + sizeof(QCQMI_HDR) - 1);
| ^~~~~~~~~~~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QmiWwanCM.c:50:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
50 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->CTLMsg.QMICTLMsgHdr.Length) + sizeof(QCQMICTL_MSG_HDR) + sizeof(QCQMI_HDR) - 1);
| ^~
QmiWwanCM.c:33:11: note: while referencing ‘QMIBuf’
33 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c: In function ‘ComposeQMUXMsg’:
QMIThread.c:105:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
105 | pRequest->QMIHdr.IFType = USB_CTL_MSG_TYPE_QMI;
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c:107:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
107 | pRequest->QMIHdr.QMIType = QMIType;
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c:110:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
110 | pRequest->MUXMsg.QMUXHdr.TransactionId = cpu_to_le16(GetQMUXTransactionId());
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c:111:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
111 | pRequest->MUXMsg.QMUXMsgHdr.Type = cpu_to_le16(Type);
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c:113:17: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
113 | pRequest->MUXMsg.QMUXMsgHdr.Length = cpu_to_le16(customQmuxMsgFunction(&pRequest->MUXMsg, arg) - sizeof(QCQMUX_MSG_HDR));
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:176,
from /usr/include/stdlib.h:395,
from QMIThread.h:54,
from QMIThread.c:12:
QMIThread.c:117:63: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
117 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->MUXMsg.QMUXMsgHdr.Length) + sizeof(QCQMUX_MSG_HDR) + sizeof(QCQMUX_HDR)
| ^~
QMIThread.c:117:31: note: in expansion of macro ‘cpu_to_le16’
117 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->MUXMsg.QMUXMsgHdr.Length) + sizeof(QCQMUX_MSG_HDR) + sizeof(QCQMUX_HDR)
| ^~~~~~~~~~~
QMIThread.c:117:43: note: in expansion of macro ‘le16_to_cpu’
117 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->MUXMsg.QMUXMsgHdr.Length) + sizeof(QCQMUX_MSG_HDR) + sizeof(QCQMUX_HDR)
| ^~~~~~~~~~~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
QMIThread.c:117:13: warning: array subscript ‘struct _QCQMIMSG[0]’ is partly outside array bounds of ‘UCHAR[256]’ {aka ‘unsigned char[256]’} [-Warray-bounds]
117 | pRequest->QMIHdr.Length = cpu_to_le16(le16_to_cpu(pRequest->MUXMsg.QMUXMsgHdr.Length) + sizeof(QCQMUX_MSG_HDR) + sizeof(QCQMUX_HDR)
| ^~
QMIThread.c:100:11: note: while referencing ‘QMIBuf’
100 | UCHAR QMIBuf[WDM_DEFAULT_BUFSIZE];
| ^~~~~~
/usr/bin/ld: /tmp/ccPdRCOh.o: warning: relocation against mbim_request_ops' in read-only section .text.startup’
/usr/bin/ld: /tmp/ccPdRCOh.o: in function qmi_main.constprop.0': main.c:(.text+0x11fa): undefined reference to udhcpc_stop’
/usr/bin/ld: main.c:(.text+0x1afc): undefined reference to udhcpc_stop' /usr/bin/ld: main.c:(.text+0x1bab): undefined reference to udhcpc_stop’
/usr/bin/ld: main.c:(.text+0x1cf5): undefined reference to udhcpc_start' /usr/bin/ld: main.c:(.text+0x21bc): undefined reference to udhcpc_stop’
/usr/bin/ld: main.c:(.text+0x2200): undefined reference to mbim_request_ops' /usr/bin/ld: /tmp/ccPdRCOh.o: in function main’:
main.c:(.text.startup+0x298): undefined reference to ql_qmap_mode_detect' /usr/bin/ld: main.c:(.text.startup+0x924): undefined reference to mbim_request_ops’
/usr/bin/ld: main.c:(.text.startup+0x932): undefined reference to `mbim_dev_ops’
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE
collect2: error: ld returned 1 exit status
make: *** [Makefile:9: all] Error 1

The modem might not be in RMNET mode.
Please check
AT+QCFG="usbcfg"

Please try the quectel-CM 1.6.8.
q_drivers/Quectel_QConnectManager_Linux_V1.6.8 at master · QuectelWB/q_drivers

AT+QCFG=“usbcfg”
+QCFG: “usbcfg”,0x2C7C,0x0316,1,1,1,1,0

Sorry. Please check
AT+QCFG="usbnet"

HI can you check my logs . I followed the Querry Linux Driver RG255C-GL for Linux 6.1.0 because modifiying the qmi_wwan.c and option.c didnt help. It always give the symbol error, vmlinux not found and donot build .ko file.

Here are the logs

Welcome to minicom 2.9

OPTIONS: I18n
Port /dev/ttyUSB2, 15:22:21

Press CTRL-A Z for help on special keys

at
OK
at+qcfg=“data_interface”
+QCFG: “data_interface”,0,0

OK
at+qcfg=“pcie/mode”
+QCFG: “pcie/mode”,0

OK
at+qcfg=?
+QCFG: “rrc”,(0-5)
+QCFG: “pdp/duplicatechk”,(0,1)
+QCFG: “risignaltype”,(“respective”,“physical”)
+QCFG: “lte/bandprior”,(1-43),(1-43),(1-43)
+QCFG: “diversity/config”,(0,1),(1,2),(0)
+QCFG: “div_test_mode”,(0,1)
+QCFG: “usbnet”,(0-3)
+QCFG: “data_interface”,(0,1),(0,1)
+QCFG: “pcie/mode”,(0,1)
+QCFG: “wifi/model”,(“fc60e”,“fc08e”,“fc64e”)
+QCFG: “sms_control”,(0,1),(0,1)
+QCFG: “call_control”,(0,1),(0,1)
+QCFG: “netmaskset”,(0,1)[,]
+QCFG: “clat”,(0,1),(0,1),,(0,32,40,48,56,64,96),,(0,1),(0,1,2,4,8),(0,1),(0,1),(0,1,2),(0,1,2)
+QCFG: “ntp”,(1-10),(5-60)

OK
at+qcfg=“usbnet”
+QCFG: “usbnet”,2

OK
wcw@cwcw-ThinkPad-P15-Gen-2i:~/q_drivers-master/Quectel_QConnectManager_Linux_V1.6.8/build$ sudo ./quectel-CM -s oai
[07-21_15:42:38:153] QConnectManager_Linux_V1.6.8
[07-21_15:42:38:153] Find /sys/bus/usb/devices/3-1 idVendor=0x2c7c idProduct=0x316, bus=0x003, dev=0x01c
[07-21_15:42:38:153] Auto find qmichannel = /dev/cdc-wdm0
[07-21_15:42:38:153] Auto find usbnet_adapter = wwan0
[07-21_15:42:38:153] netcard driver = cdc_mbim, driver version = 6.8.0-31-generic
[07-21_15:42:38:153] Modem works in MBIM mode
[07-21_15:42:38:162] cdc_wdm_fd = 7
[07-21_15:42:38:162] mbim_open_device()
[07-21_15:42:41:162] mbim_open_device:1656 err=110, Status=0
[07-21_15:42:41:162] mbim_open_device()
[07-21_15:42:44:163] mbim_open_device:1656 err=110, Status=0
[07-21_15:42:44:163] mbim_open_device()
[07-21_15:42:47:164] mbim_open_device:1656 err=110, Status=0
[07-21_15:42:47:164] mbim_open_device()
[07-21_15:42:50:165] mbim_open_device:1656 err=110, Status=0
[07-21_15:42:50:165] mbim_open_device()
[07-21_15:42:53:166] mbim_open_device:1656 err=110, Status=0
[07-21_15:42:53:166] mbim_open_device()

Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 28 Spd=480 MxCh= 0
D: Ver= 2.00 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=27633087
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

Any work arround?

For normal version it do not support MBIM mode.
Please set the modem to RMNET mode.
AT+QCFG="usbcfg",0