PCIe Drivers for EM9191

Hello, I noticed that both the Linux and Windows drivers for the EM9191 are only USB drivers. I built a test system, installed the module in a PCIe adapter and with Ubuntu I can see it using “lspci”. I compiled the drivers which I found on the Sierra Wireless website, but had no luck with actually using it because the driver page clearly says that the drivers are for USB, and I’m using PCIe instead. I also tried using Windows, but I ran into the same issue. I am able to see the module in the device manager, but when I install the drivers, which again, clearly say that they are USB drivers, it doesn’t actually work. Is there any way to get this module to run via PCIe? At this point, I don’t care if I get it working in Linux or Windows, I just want to be able to use the module.

It was answered in Em9190 and Em9191 - Any suggested PCIe Mini Card Adapters (if using PCIe to link to host computer)? - #3 by blkist

What are you talking about? My question was NOT answered. I asked if there were PCIe drivers… That has nothing to do with the post you linked here. In fact, I was the last user to reply to the post that you linked. Try reading the question and understanding it little more before just saying that it was already answered.

Hi blkist,

Sorry for the typo. You can get MBPL drivers on Linux for EM9191 here MBPL drivers

1 Like

Beautiful! Thank you, I will try those drivers later tonight.

1 Like

The readme in those drivers explains how to manage the modem using MBIM, and using mbimcli and mbim-network :grinning: Excellent!!!

A related question though, is there any issue using the EM9191 using the upstream mhi driver integration already available in Linux 5.13 through the new wwan subsystem (i.e. without any custom driver from Sierra)?

Hi @blkist , did you manage to get it working using PCIe drivers ?

Hello Everybody on this topic.

I have tried the posted drivers R20 but also the R18 with the same results. Below is my setup.

EM9191 using an M.2 to PCIe adapter card on my PC. The adapter is the following.

http://www.bplus.com.tw/Adapter/PN12A.html

This is a dual bus adapter, meaning that you can use PCIe or USB3.0 bus, one at a time by sliding a tiny switch has onboard.

My OS is Ubuntu 20.04.3 LTS with kernel 5.11.0-34-generic. As per the standard procedure, drivers have been downloaded and extracted in a directory, build essentials are install and “make && sudo make install” has been issued but not result. Below is the output from lspci -v command.

03:00.0 Unassigned class [ff00]: Qualcomm Device 0306
Subsystem: Device 18d7:0200
Flags: fast devsel
Memory at f7d01000 (64-bit, non-prefetchable) [size=4K]
Memory at f7d00000 (64-bit, non-prefetchable) [size=4K]
Capabilities:
Kernel modules: mhi_pci_generic

Initially when I realized the issue I made all contacts with bplus and they confirmed that adapter is compatible with the module and completely transparent to the OS (driverless).

Just for the record the same situation with Openwrt occurs but with small differences. I think I am hit the wall write now. Any suggestions would be highly appreciated.

Hi @aleksander0m , I’m trying to use the EM919x with the vendor driver, but also with the upstream mhi driver on 5.13.x, without success for the moment with both solutions.

For information, my setup consists of an EM919x connected to an I.MX6 DualLite through the PCIe bus.

Concerning the upstream driver, I added a MHI channel mapping the mhi/pci_generic driver, then I’m able to communicate with the modem but this remains random.

I opened a topic about: Sierra Wireless AirPrime EM919X PCIe support

Hi @aleksander0m, @d.anti and others, did any of you manage to get the EM919x working in Ubuntu or OpenWrt using PCIe driver?

I have following setup:
- Raspberry Pi CM4 IO board (running Ubuntu 20.04 LTS (kernel: 5.4.0-1042-raspi))
- EM9191 connected via PCIe and mPCIe adapters (Ableconn PEX-MP117 and Ableconn MPEX-134B)

I installed the MBPL PCIe driver (R20) from source provided by Donald (Aug 21) here. lspci -v provides this:

01:00.0 Unassigned class [ff00]: Qualcomm Device 0306
        Subsystem: Device 18d7:0200
        Flags: fast devsel
        Memory at 600000000 (64-bit, non-prefetchable) [disabled] [size=4K]
        Memory at 600001000 (64-bit, non-prefetchable) [disabled] [size=4K]
        Capabilities: <access denied>
        Kernel modules: mhictrl

However, I don’t see any device interfaces in /dev/ and modprobe gives this error:

$ sudo modprobe mhictrl
modprobe: ERROR: could not insert 'mhictrl': Unknown symbol in module, or unknown parameter (see dmesg)

Can anyone help?

where you able to run the card at this setup?
i have the same setup PN12A adaptor and EM9191 on ubuntu server 20.04, and i’m not able to make the device available dosn’t even comes up on lspci…

if have a solution have found an workaround i’ll happy if you can share

Hi @arun and @arthur.rabate I apologize for not replying for so long… I had some time to experiment with this modem and I found out how to get it working with ROOter, which is based on OpenWRT. I have not gotten it working via PCIe, but I have it working great over USB. I have ROOTer installed on my Raspberry Pi 4 using the 2021-12-18 build. Look for “RaspberryPi-4-GO2021-12-18-AB21.zip” on the page linked below.
http://aturnofthenut.com/autobuilds/

The best way I’ve found to get this connected to the Raspberry Pi 4 is this enclosure linked below.

I hope this helps you guys!

The EM919x support in the upstream Linux kernel (i.e. without custom MBPL from Sierra) is already implemented; some of us tested it already in different platforms successfully. I personally tested the patches on an openwrt 21.02 setup with drivers backported to kernel 5.4. I don’t think the patches have been released in any stable Linux version yet though, they’ll probably be included in 5.17 (5.16 was 2 days ago)

1 Like

@aleksander0m, have you had any luck with this yet? I’m trying out the EM9191 in PCI mode in my Turris Omnia, which runs OpenWRT and Linux kernel 4.14. Any suggestions on how to get the drivers working? Side note, I’m far from an expert, so any help would be appreciated.

Okay I just got an image of ROOter installed on my Omnia, and the Linux Kernel version is 5.4.158. All I’m seeing with an “lspci” is:

01:00.0 Unassigned class [ff00]: Qualcomm Device 0306

My EM9191 is recognized and works in USB mode, but I still have no luck with PCI mode. I tried installing the kernel objects that I downloaded from the support page, but none of them worked. Once again, I’m still kind of a newbie when it comes to all this. And the reason I would rather use PCIe mode, is because I would like the modem to be inside my router with the SMA plugs attached to the case instead of it being in an external enclosure.

Yes, I can confirm the EM9191 works fine with the latest additions in the mhi drivers in the upstream Linux kernel. These changes are already available in v5.17-rc1. I personally tested the changes backporting them manually on top of v5.4.

You can try to integrate these first GitHub - kristrev/mhi-for-kernel-4.14: Backport of the MHI bus, the client interface driver and the network driver and once you have that, add on top the missing mhi patches to support the EM9191