BG951 with usb serial option driver

Hello everyone,

I have two variants of the same custom board design, integrating two different Quectel LTE/GNSS modules: BG96 and BG951A-GL. We have a custom OS, based on the Yocto project (both setups are running the same image, kernel version 5.15).
In the setup with the BG96, when the module is powered up, the OS is able to recognize the module using the usb serial option driver (ttyUSBx devices are mounted under /dev); in the second setup with the BG951A-GL, when the module is powered up, the OS does not recognize the module and it uses the cdc_acm driver (ttyACM0 device is mounted under /dev, and shortly after it is disconnected). I tried to force the usage of the option driver in the setup using the BG951A-GL module, but the OS recognizes the model as a wrong device:

(BG951A-GL Setup)
Board $>  lsusb
Bus 003 Device 005: ID 216f:0051 Das U-Boot U-Boot 2012.10 

(BG96 Setup)
Board $ > lsusb
Bus 002 Device 002: ID 2c7c:0296 Quectel Wireless Solutions Co., Ltd. BG96 CAT-M1/NB-IoT modem

Could you please help me understand if the problem is at hardware or software level? From the BG95 documentation, it looks like the support for usb serial driver must be installed on the Quectel module (it looks like something handled by Quectel), can you confirm this?

Any help is much appreciated, have a nice day!

For anyone experiencing this issue, somehow I managed to progress a little bit.
First, I tried to solve the output of the command lsusb. In order to do so, I had to power-up the module (make sure timings are compliant with what is described on the Quectel Application note, i.e. manage PON_TRIG and PWRKEY pins accordingly) and interact with the physical UART:

> AT+QCFG="usb",1
> AT+CFUN=1,1

After this, the output of the command lsusb becomes:

Board $> lsusb
Bus 003 Device 003: ID 2c7c:2000 Quectel Wireless Solutions Co., Ltd. BG77x/BG95x CAT-M1/NB-IoT Modem

In order to force temporarily the usage of the option driver, I issued the command:

Board $> modprobe option
usbcore: registered new interface driver option
usbserial: USB Serial support registered for GSM modem (1-port)

And then, I forced the vendor ID and product ID (from lsusb command)

Board $> echo 2c7c 2000 | tee /sys/bus/usb-serial/drivers/option1/new_id
option 3-1:1.0: GSM modem (1-port) converter detected
option 3-1:1.1: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB1
option 3-1:1.2: GSM modem (1-port) converter detected
option 3-1:1.3: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB3
option 3-1:1.4: GSM modem (1-port) converter detected
option 3-1:1.5: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB5
option 3-1:1.6: GSM modem (1-port) converter detected
option 3-1:1.7: GSM modem (1-port) converter detected
usb 3-1: GSM modem (1-port) converter now attached to ttyUSB7

I am still investigating why I cannot enable the GNSS module even if the GNSS_EN pin is high; any help is appreciated.

If you already could make it

I guess the BG951A should works with the cdc_acm driver.
If you would like to use the option, it is also supported.

Could you show the :

cat /sys/kernel/debug/usb/devices

The nmea data output data port could be :

It depends how you set the output port