Thanks for your query in Quectel forums.
We cannot provide this linux driver directly to the end user, because there will be authentication problems when installing this driver. Lenovo will launch a customized ubuntu in the future. It is recommended that you obtain it from Lenovo.
After you have the 5.13+ kernel installed you will see the device in network-manager. The main problem is that there is still an FCC lock on it which prevents you from enabling it in modem-manager. Hopefully it gets added to the https://snapcraft.io/lenovo-wwan-dpr snap. Until then I was able to get it working on a Lenovo X1 Yoga (Gen 6), Ubuntu 20.10, 5.13 kernel, Google Fi Data-Only SIM, and the following…
# Download network-manager, modem-manager, etc.,...
sudo apt update
sudo apt install network-manager network-manager-gnome modemmanager libqmi-utils gcc
# Reference: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/402#note_1064882
# Download the snap
snap download lenovo-wwan-dpr --edge
# Extract the snap files
sudo mount -t squashfs -o ro lenovo-wwan-dpr_5.snap /home/$whoami/Downloads/lenovo/snap
# Download script by Joar Wandborg
# TODO: manually modify the define statements in fcc_unlock.c appropriately
#define MBIM_DEVICE_PATH "/dev/wwan0p2MBIM"
#define MBIM2SAR_SO_PATH "/home/jonfen/Downloads/lenovo/snap/usr/lib/mbim2sar.so"
# Compile the script
gcc -o fcc_unlock_v2 fcc_unlock.c
# Run the script
sudo env VERBOSE=1 ./fcc_unlock_v2
# Enable the modem
mmcli -v --modem=0 -e
# Setup the connection, for Google Fi just pick the default T-Mobile profile, ignore their h2g2 APN
That’s very interesting. I wonder if it would be possible to snoop those MBIM messages so that we could add proper open source support for them? This would allow automatic unlocking from ModemManager, similar to what we have for the Sierra Wireless FCC lock implementation.
Maybe add some debug buffer printk’s in drivers/net/wwan/wwan_core.c? If I read the code correctly, those messages go through wwan_port_fops_write() and wwan_port_fops_read(). Should be pretty simple fo add a couple of print_hex_dump() lines there.