LPA3588 uses the Quectel RG255C module for 5G and GPS

Before March 25, 2025, the firmware and SDK released by Neardi are not adapted for RG255C by default. Dialing will report the following error:

neardi@LPA3588:~$ sudo  quectel-CM
[03-25_12:14:56:463] QConnectManager_Linux_V1.6.5
[03-25_12:14:56:465] Find /sys/bus/usb/devices/7-1.4 idVendor=0x2c7c idProduct=0x316, bus=0x007, dev=0x006
[03-25_12:14:56:471] network interface '' or qmidev '' is not exist
[03-25_12:14:56:472] atdevice_detect failed
[03-25_12:14:56:472] qmidevice_detect failed

This is due to VID, PID not being configured and driver not being updated

Configure VID, PID

SDK modifications as follows:

--- a/kernel/drivers/usb/serial/option.c
+++ b/kernel/drivers/usb/serial/option.c
@@ -2174,6 +2174,7 @@ static const struct usb_device_id option_ids[] = {
         { USB_DEVICE(0x2C7C, 0x0620) }, /* Quectel EG20 */
         { USB_DEVICE(0x2C7C, 0x0800) }, /* Quectel RG500Q/RM500Q/RG510Q/RM510Q */
         { USB_DEVICE(0x2C7C, 0x0900) }, /* Quectel RG500U */
+        { USB_DEVICE(0x2C7C, 0x0316) }, /* Quectel RG255C */
 #endif
        { } /* Terminating entry */
 };
@@ -2263,7 +2264,7 @@ static int option_probe(struct usb_serial *serial,
                       return -ENODEV;
 
                   //Quectel EC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96&AG35&EG12&EG18's interface 4 can be used as USB network device (qmi,ecm,mbim)
-                   if((idProduct != 0x6002) &&(idProduct != 0x6000) && (idProduct != 0x6026)&& (idProduct != 0x0900)
+                   if((idProduct != 0x6002) &&(idProduct != 0x6000) && (idProduct != 0x6026) && (idProduct != 0x0900) && (idProduct != 0x0316)
                                           &&serial->interface->cur_altsetting->desc.bInterfaceNumber >= 4)
                            return -ENODEV;

Update qmi_wwan_q Driver

qmi-wwan-q.c (77.4 KB)
Replace to sdk/kernel/drivers/net/usb/qmi_wwan_q.c

Recompile Kernel and Flash

./build.sh kernel //kernel will be generated in sdk/rockdev/boot.img

Method to flash boot.img separately:
Select in flashing tool: Download image, discover loader device, click device partition table (must be executed, if there’s an error prompt, click confirm), check boot, import boot.img, execute

Try Dialing Again

Reports Segmentation fault error, log as follows:

neardi@LPA3588:~$ sudo quectel-CM
[03-25_12:25:44:455] QConnectManager_Linux_V1.6.5
[03-25_12:25:44:457] Find /sys/bus/usb/devices/7-1.4 idVendor=0x2c7c idProduct=0x316, bus=0x007, dev=0x004
[03-25_12:25:44:457] Auto find qmichannel = /dev/cdc-wdm0
[03-25_12:25:44:457] Auto find usbnet_adapter = wwan0
[03-25_12:25:44:457] netcard driver = qmi_wwan_q, driver version = V1.2.7_beta0315
[03-25_12:25:44:458] qmap_mode = 1, qmap_version = 5, qmap_size = 16384, muxid = 0x81, qmap_netcard = wwan0
[03-25_12:25:44:458] Modem works in QMI mode
[03-25_12:25:44:481] cdc_wdm_fd = 7
[03-25_12:25:44:556] Get clientWDS = 9
[03-25_12:25:44:588] Get clientDMS = 1
[03-25_12:25:44:620] Get clientNAS = 3
[03-25_12:25:44:652] Get clientUIM = 2
[03-25_12:25:44:684] Get clientWDA = 1
[03-25_12:25:44:716] requestBaseBandVersion RG255CCNAAR01A05M4G
[03-25_12:25:44:748] requestSetEthMode QMUXResult = 0x1, QMUXError = 0x46
[03-25_12:25:44:780] requestGetSIMStatus SIMStatus: SIM_READY
Segmentation fault

Need to upgrade QConnectManager_Linux dialing tool. From the tool’s update log, it can be seen that versions V1.6.6 and later support the SDX35 series, and RG255C-CN belongs to the SDX35 series

Release Notes

[V1.6.6]
Date:   1/12/2024
enhancement:
  1. support SDX35 platform
fix:

Steps to Upgrade QConnectManager_Linux Tool

Here we will upgrade the QConnectManager_Linux tool to V1.6.7

1. Install Build Environment

sudo apt update
sudo apt install build-essential cmake libusb-1.0-0-dev

2. Copy quectel-linux-android-qmi-wwan-driver-v129.zip to LPA3588 and extract
3. Compile

neardi@LPA3588:~/quectel/quectel-linux-android-qmi-wwan-driver-v129$ make
rm -rf *.o libmnl/*.o quectel-CM quectel-qmi-proxy quectel-mbim-proxy quectel-atc-proxy
gcc -Wall -Wextra -Werror -O1  quectel-qmi-proxy.c -o quectel-qmi-proxy -lpthread -ldl -lrt 
gcc -Wall -Wextra -Werror -O1  quectel-mbim-proxy.c -o quectel-mbim-proxy -lpthread -ldl -lrt 
gcc -Wall -Wextra -Werror -O1  quectel-atc-proxy.c atchannel.c at_tok.c util.c -o quectel-atc-proxy -lpthread -ldl -lrt 
gcc -Wall -Wextra -Werror -O1  QmiWwanCM.c GobiNetCM.c main.c QCQMUX.c QMIThread.c util.c qmap_bridge_mode.c mbim-cm.c device.c atc.c atchannel.c at_tok.c udhcpc.c -o quectel-CM -lpthread -ldl -lrt

3. Try Dialing Again
Successful dialing log as follows:

GPS Usage

How to Enable GPS Function