How to enable on Linux? Kernel is 6.16.4
Hi,
When your module is connected to your system via USB, three main functions are enabled:
wwan0/qmi_wwan or MBIM – for data
ttyUSBx ports – AT commands and voice call control
gnss0 (optional) – for GNSS
Ensure that the option and qmi_wwan drivers are enabled in the kernel.
lsmod | grep option
lsmod | grep qmi_wwan
Once you connect the device, you should see the ttyUSB ports open in dmesg. Typically:
ttyUSB0 – AT command (main)
ttyUSB1 – AT command (auxiliary)
ttyUSB2 – NMEA/GNSS
ttyUSB3 – Modem data
To make a voice call, you will only send AT commands via ttyUSB0 or ttyUSB1.
For testing:
echo -e “ATI\r” > /dev/ttyUSB0
cat < /dev/ttyUSB0
You can check the document.
quectel_eg06xkex120kem06xk_series_at_commands_manual_v1-0.pdf (2.1 MB)
Minimal AT flow for testing ;
ATI
AT+CPIN? // Is the SIM ready?
AT+CSQ // Signal quality?
AT+CREG? // Is it registered to the network?
AT+COPS? // Current operator
AT+QNWPREFCFG=“voice_domain”, // e.g. 1=CS, 2=IMS, variant by operator
ATD; // example : ATD+905XXXXXXXXX; Initiating a call
ATH // Hang up
ATA // Reply incoming call
AT+CLCC // List active calls
Loaded both modules, /dev/ttyUSBX is nowhere to be seen
In this case, the driver/port enumeration on the Linux side doesn’t work correctly. The EM061K-GL’s USB AT ports should normally be automatically opened as ttyUSBx. If not, I recommend checking these steps in order:
lsusb //Is the USB device recognized?
Normally you should see a line like this:
2c7c:0125 Quectel Wireless Solutions Co., Ltd. (VendorID 2c7c belongs to Quectel.)
dmesg | grep -i usb. //You can see the device’s VID/PID
dmesg | grep -i option. //You can also see whether the option driver is binding the device
This way, you can quickly determine whether the problem is hardware (not installed), kernel (no driver), or userspace (ModemManager is crashing).
When a USB device is plugged into Linux, the kernel checks the Vendor ID (VID) and Product ID (PID). If this VID:PID pair is defined in a driver table in the kernel, that driver takes action and binds the device (i.e., ties it to itself).
If not defined:
The kernel detects the device (exists in lsusb),
But it can’t find a suitable driver – device nodes like /dev/ttyUSBx are not created.
For example:
Quectel VID: 2c7c
Your module PID: 0125 (i.e.)
If the kernel only defines 2c7c:0123 in options.c, the driver won’t bind itself even if it detects 0125 → the port won’t open.
If it doesn’t bind, for a temporary solution:
echo 2c7c 0125 | sudo tee /sys/bus/usb-serial/drivers/option1/new_id
For a permanent solution: Add this PID to the drivers/usb/serial/option.c file and recompile the kernel.
If you share the results, we can re-evaluate. Thank You.
The modem seems to only bind to cdc_mbim. I added the modules option and qmi_wwan. Blacklisting cdc_mbim renders modem inoperable.
Modem is visible thorugh lsusb just fine and data works all of the time. USB ID is 2c7c:6008. Followed the steps but there’s still no /dev/ttyUSBX.
Here you can see that the device is detected, but /dev/ttyUSBx is not created — the driver has not bound.
Could you try the following steps?
- Verify the device is present:
lsusb # should list 2c7c:6008 (Quectel)
- Add the USB ID to the option driver:
- Add
{ USB_DEVICE(0x2c7c, 0x6008) }, /* Quectel EM061K-GL */todrivers/usb/serial/option.c. - (If present in your tree) also add the same definition to
drivers/usb/serial/option_ids.h.
- Build and install just the USB-serial modules:
cd /usr/src/linux
make modules_prepare
make M=drivers/usb/serial modules
sudo make M=drivers/usb/serial modules_install
sudo depmod -a
- Load the driver and (if needed) bind manually:
sudo modprobe option
echo 2c7c 6008 | sudo tee /sys/bus/usb-serial/drivers/option1/new_id
- Check that the serial ports appear:
ls /dev/ttyUSB*
You should now see /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyUSB2, …
One of these is the AT command port; others may be data/diagnostic.
The device seems to already be added in the tree.
The device is identified with said macro:
#define QUECTEL_PRODUCT_EM061K_LWW 0x6008
Then, these are the definitions for the modem in the option_ids array:
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x30) },
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0x00, 0x40) },
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EM061K_LWW, 0xff, 0xff, 0x40) },
What do I do?
I replaced the above with your suggestion (I recompiled the kernel just to be safe) and followed the steps. Doesn’t work.
Is your module software up to date? The problem may be caused by the module firmware.
Quectel often releases different firmware packages for the same hardware:
- A version that only supports MBIM/NCM (does not open AT ports).
- The firmware may be in MBIM-only mode.
Therefore, you can also update the module firmware and try it.
A Quectel support expert can assist with the new firmware.
Let’s do it. Modem manager reports my FW version to be EM061KGLAAR01A02M2G
Hi,
It is necessary to obtain the current firmware package from Quectel FAE or distributor.
Maybe @bean.Wang-q can help you.
Dear @mariano ,
I have attached the latest firmware as requested for EM061K-GL.
Kindly check your mail inbox.
Best Regards,
Aghelan

