<div dir="ltr"><div>Hi!</div><div><div><br></div><div>I'm trying to get the modem running on my Thinkpad X1 Nano which i ordered with the Snapdragon X55 / 5G Modem.</div><div><br></div><div>I contacted Bjørn Mork who seems to be the author for some other kernel modules for usb-devices and we've been digging a bit. He informed me that you're already working on this chip here: <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bus/mhi/pci_generic.c?id=aac426562f568520b674f0d5ae3929977be9f1c0" rel="noreferrer" target="_blank">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/bus/mhi/pci_generic.c?id=aac426562f568520b674f0d5ae3929977be9f1c0</a> </div><div>I'm on ubuntu 21.04 (if it matters) and have built my kernel from mainline git (as well as bleeding-edge modemmanager, libqmi, libmbim as of may 7th) and now ModemManager detects the modem but but something is still failing when trying to enable it.</div><div><br></div><div>Here's a loose translation of what Bjørn mentioned:</div><div><br></div><div>---------------------</div><div>This problem might be specific to Lenovo/Thinkpad, the only thing you might need could be to actually turn on the radio:<br><br>                                                                 >>>>>>   HwRadioState = 'on'<br>                                                                 >>>>>>   SwRadioState = 'off'<br><br>HwRadioState indicates that the input-signal to the module (W_DISABLE#) is OK.<br>SwRadioState indicates that the radio is put in airplane mode through software.  Either BIOS or it might be the default of the modem-firmware.</div><div><br></div><div>Lenovo has earlier (EM7455) required that the driver sends a magic "Set FCC Authentication" request on startup to enable the radio. You can also see it in your log since MM tries it when the radio-state returns "OperationNotAllowed".<br><br>                                                                 <<<<<< QMUX:<br>                                                                 <<<<<<   length  = 19<br>                                                                 <<<<<<   flags   = 0x80<br>                                                                 <<<<<<   service = "dms"<br>                                                                 <<<<<<   client  = 1<br>                                                                 <<<<<< QMI:<br>                                                                 <<<<<<   flags       = "response"<br>                                                                 <<<<<<   transaction = 5<br>                                                                 <<<<<<   tlv_length  = 7<br>                                                                 <<<<<<   message     = "Set FCC Authentication" (0x555F)<br>                                                                 <<<<<< TLV:<br>                                                                 <<<<<<   type       = "Result" (0x02)<br>                                                                 <<<<<<   length     = 4<br>                                                                 <<<<<<   value      = 01:00:11:00<br>                                                                 <<<<<<   translated = FAILURE: MissingArgument<br><br><br>'MissingArgument' is also interesting. It means that the request ID exists and since this is a vendor-specific code (as far as i know) it oculd mean that it's specified by Lenovo, not by Sierra Wireless as i've previously thought.<br><br>That could mean that this is the correct method to enable the radio, but that they require an input-argument. Maybe a code? or something else?</div><div><br></div><div>It could also just mean that QMI_DMS request 0x555F is something else entirely in this Foxconn modem and is completley unrelated to radio on/off. </div><div><br></div><div>The problem we have now is that we no longer have a simple solution to snoop the trafic from windows. It was simple with USB but I have no idea how to do that with PCIe. I've never worked with PCI-drivers.</div><div><div>---------------------</div><div></div></div><div><br></div><div>Does anyone have any idea / some other input for how to get further?</div></div><div><br></div><div>Best regards</div><div>Oskar</div></div>