Backporting Modem Drivers From Kernel 4.9.x To 4.4.50
In this section we will describe the process needed to update Raspbian 4.4.50 in order to support some of the newer mPCIe modem models (which are currently only supported in Kernel 4.9.x)
mPCIe Modem support on Linux is pretty straight forward as these devices are in essence USB peripherals. When a modem is installed the system detects it at boot up and looks at the the vendor id and device id strings, these are compared against an internal look up table for matches by a series of modules and assigned to the appropriate device entries in /dev.
As time goes on newer modems get released and these gradually get added to the kernel module's list so the system can recognise them.
The two kernel models responsible for dealing with modems are option.ko and qmi_wwan.ko and it's these we'll be updating with this process.
The current stable version of Raspbian (at time of writing) is 4.4.50, you can tell your version by running the command below :
# uname -a Linux raspberrypi 4.4.50-v7+ #970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux
if you are not on this version, then you can switch to it via the command below :
rpi-update 52241088c1da59a359110d39c1875cda56496764
Once you have that version installed you can run the below commands, this will run the installer, take a snapshot backup of the current module version installed before updating it (you can roll back to the older version using rollback.sh).
# cd /root/ # wget http://www.embeddedpi.com/ckfinder/userfiles/files/modemupdate/modem-update.tar.gz # tar -xzf modem-update.tar.gz # cd modem-update # chmod +x *.sh # ./update *********************** *** Starting update *** *********************** Backing up old modules to /root/modem-update/old-modules ... ‘/lib/modules/4.4.50-v7+/kernel/drivers/net/usb/qmi_wwan.ko’ -> ‘/root/modem-update/old-modules/qmi_wwan.ko’ ‘/lib/modules/4.4.50-v7+/kernel/drivers/usb/serial/option.ko’ -> ‘/root/modem-update/old-modules/option.ko’ Installing new modules... ‘new-modules/qmi_wwan.ko’ -> ‘/lib/modules/4.4.50-v7+/kernel/drivers/net/usb/qmi_wwan.ko’ ‘new-modules/option.ko’ -> ‘/lib/modules/4.4.50-v7+/kernel/drivers/usb/serial/option.ko’ Checking copy... Install Done AOK... Syncing System... All Done! Now run the command below to reboot the system reboot # reboot
For information on the process behind how these new modules were built, or to compile this for a different version, please see the files in the compile-instructions folder