T99W175 - enable AT/COM port

Misc Mini PCI-E and M.2 Modem Card and USB Dongle Topics
Forum rules
Use the SEARCH function for related topics PRIOR to posting a new topic on the same subject.
Post Reply
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

T99W175 - enable AT/COM port

Post by S12345 »

I've got a HP T99W175 X55 5G modem. How would I go about enabling the COM port so I can run AT commands? The modem only has driver support on Windows and it isn't recognized by ModemManager on Linux and exposes no tty ports there either.
packlet
Posts: 51
Joined: Wed Sep 22, 2021 5:46 pm
Has thanked: 0
Been thanked: 6 times

Re: T99W175 - enable AT/COM port

Post by packlet »

apparently supported in ModemManager as of 1.18, linux kernel 4.13+ or 5.7+ (?), with the MHI kmod. That has yet to filter down to OpenWRT and Rooter would require a LOT of work to support PCIe modems, as it's been built around the USB interfaces.. There is no known USB interface on these, but if you find one, please let us know!
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by S12345 »

I'm on MM 1.18.8 with kernel 5.17, it only pops up as a wireless device in lspci and its not recognized elsewhere. On windows it acts as a USB hub and exposes the network adapter and GNSS interfaces as USB ports. I did try to force the VID and PID to be a USB hub on linux but I have no idea what I'm doing and it ended up throwing an error. The net interface is VID_03F0&PID_0A6C&MI_00 whereas the GNSS interface is MI_02. The hub is the same VID/PID but with no MI value. Are there any known working commands I can use to try to properly force it into becoming a hub so it'll attach the other devices?
packlet
Posts: 51
Joined: Wed Sep 22, 2021 5:46 pm
Has thanked: 0
Been thanked: 6 times

Re: T99W175 - enable AT/COM port

Post by packlet »

"On windows it acts as a USB hub and exposes the network adapter and GNSS interfaces as USB ports. "

that's intriguing. so it shows up as usb in device manager, but no serial/COM ports? how is the modem connected to the PC? m.2 slot, m.2-to-pci/e adapter, or external USB sled?
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by S12345 »

Correct. It's in my Dell Latitude connected via a WWAN M.2 slot.
packlet
Posts: 51
Joined: Wed Sep 22, 2021 5:46 pm
Has thanked: 0
Been thanked: 6 times

Re: T99W175 - enable AT/COM port

Post by packlet »

ok, that makes sense, as these modems are PCIe ONLY and only work in an m.2 slot with Pcie support, like those in your Dell latitude (5430, 7220, 7330, 7430 9430, 9420, 9520) per Dell's driver info for the dw5930e here: https://www.dell.com/support/home/en-us ... 330-laptop. I tried messing with the BIOS info using regedit on my del XPS 8700 to emulate one of those, but could not get the drivers to install. (this does work for the dw5821e drivers).

[Thu May 26 21:15:53 2022] Vendor Software Return Code: 1154
[Thu May 26 21:15:53 2022] logo.png
[Thu May 26 21:15:54 2022] Name of Exit Code: ERROR_INSTALL_PLATFORM_UNSUPPORTED

possibly because my Dell doesn't have the m.2 interface at all?... (i've tried with and without the modem connected via USB sled, but clearly that doesn't look like a pci device to my machine, or anything at all for that matter...)

from what i've googled, recent linux & MM should work with these modems via MHI over the PCIe interface (not USB) but i have no experience with that... please keep us posted if you make any progress!

fyi, some refernces to that modem on linux here: http://junyelee.blogspot.com/2021/03/linux-mobile-interface-broadband-model.html
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by S12345 »

It works in my 5511 just fine, they don't seem to be model locked. I guess my issues must be down to the HP version having a different VID and PID. I recompiled the Linux kernel in drivers/bus/mhi/host/pci_generic.c and drivers/usb/serial/option.c(no idea if this one was needed) to include the HP hwids. I guess I'll try to clean up my mods and submit a pull request to the kernel so it works OOB for anyone else... no idea what I'm doing so hopefully I do this right. I will note that it doesn't really want to initialize itself automatically and I had to manually pull an IP using dhclient. I also don't have 5g working quite yet. I'll keep messing with it and see if I get it working fully. Ideally I'd flash a generic firmware or a dell/lenovo/Thales one at least but I'm not totally sure how to do that.
packlet
Posts: 51
Joined: Wed Sep 22, 2021 5:46 pm
Has thanked: 0
Been thanked: 6 times

Re: T99W175 - enable AT/COM port

Post by packlet »

if you have now have AT-command access to the modem, what does it show for "AT^customer=?" and "AT^customer?"

while have one of these, i don't have any hardware that can talk to it. beginning to wonder why I bothered... :-)
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by S12345 »

Sorry for the late response,

Code: Select all

^CUSTOMER: 4

OK
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

A little bit of background on what I've found on the T99W175:

There are several vendors of this modem. HP, Lenovo, Dell, Thales. HP (03f0:0a6c), Dell (DW5930e), Thales (MV31-W). Thales have a couple usb versions, however, the rest are PCI. You can either find a laptop with M.2 socket or an available mpcie slot (with pcie enabled) and use an M.2/mcpie adapter board such as the "Ableconn MPEX-134B" available on amazon for $25 or so while they last.

I have the cheapest available HP version which linux does not seem to have support yet. The other versions have recently gained support (lenovo, Thales, Dell) with MHI drivers and ModemManager, however, the HP (03f0:0a6c) version does not seem to have support from what I can tell. I believe it is just a matter of adding additional support for the 03f0:0a6c VID:PID in the MHI driver and with ModemManger but that is a touch above my head. It does work with the above adapter under windows 10 however.

Also, if you install a version of the Dell drivers for the DW5930e (can't remember exact driver version) it will not function correctly but DOES expose a working port to run AT commands and seems to be very similar to the foxconn T77W968 dell branded DW5821e modem and supports many of the same AT commands. I did not experiment much with this but the ability is there anyway.

Hopefully the HP version gets added to linux support soon. It would make a great little 5G modem for those with access to the PCI buss.
S12345
Posts: 6
Joined: Tue May 24, 2022 12:29 pm
Has thanked: 0
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by S12345 »

I just figured out that with "AT^CUSTOMER=1" it turns into a DW5930e and I'm now able to get a COM port on Windows. This still does require the very long Linux workaround to be able to execute AT commands in the first place though.
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

Which version did you say you had again? I have both the Lenovo and HP versions. I have the Lenovo version working in both Windows and Linux but only windows with the HP version. I've been working on trying to modify the mhi driver in linux kernel to recognize the HP but not had much luck yet. If you have the HP, how did you get working under linux? AT commands seem to be very similar to other foxconn modems for signal and IMEI and such.
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

Nevermind. If you add the modem VID:PID to the mhi driver source and rebuild it will recognize the HP variant. After reboot the kernel will recognize the modem properly. Luckily ModemManager also recognized the modem without edits and everything seems to be working properly under linux (ubuntu). I was expecting to have to add the HP variant to ModemManager as well but fortunately it was recognized by default.
Muhannad
Posts: 9
Joined: Thu Sep 08, 2022 7:40 pm
Has thanked: 1 time
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by Muhannad »

Big thanks for sharing this Information!

Did you build from source at Linux next? How exactly did you modify the Driver?

Me still running on an older Kernel this is the only source i found so far https://github.com/ylintan/mhi_driver_5.15.6 My Guess:
Original :

Code: Select all

;

static const struct pci_device_id mhi_pci_id_table[] = {
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0306),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx55_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx24_info },
	{ PCI_DEVICE(0x1eac, 0x1001), /* EM120R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(0x1eac, 0x1002), /* EM160R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), With eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b0),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), Non-eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b1),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* MV31-W (Cinterion) */
	{ PCI_DEVICE(0x1269, 0x00b3),
		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
	{  }
};
MODULE_DEVICE_TABLE(pci, mhi_pci_id_table);
Modified (added 3 lines at the bottom):

Code: Select all

;

static const struct pci_device_id mhi_pci_id_table[] = {
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0306),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx55_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx24_info },
	{ PCI_DEVICE(0x1eac, 0x1001), /* EM120R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(0x1eac, 0x1002), /* EM160R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), With eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b0),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), Non-eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b1),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* MV31-W (Cinterion) */
	{ PCI_DEVICE(0x1269, 0x00b3),
		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
	/* 0d40 (HP Inc.) */
	{ PCI_DEVICE(0x03f0, 0x0a6c),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	{  }
};
MODULE_DEVICE_TABLE(pci, mhi_pci_id_table);
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

Correct. I just added the 03f0:0a6c device just as you have above. I was running ubuntu so I just downloaded the source for my current version of ubuntu and modified as discussed above then built and installed.
eskaryo
Posts: 61
Joined: Tue Aug 30, 2022 1:59 am
Has thanked: 5 times
Been thanked: 5 times

Re: T99W175 - enable AT/COM port

Post by eskaryo »

Muhannad wrote: Thu Sep 08, 2022 7:59 pm Big thanks for sharing this Information!

Did you build from source at Linux next? How exactly did you modify the Driver?

Me still running on an older Kernel this is the only source i found so far https://github.com/ylintan/mhi_driver_5.15.6 My Guess:
Original :

Code: Select all

;

static const struct pci_device_id mhi_pci_id_table[] = {
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0306),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx55_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx24_info },
	{ PCI_DEVICE(0x1eac, 0x1001), /* EM120R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(0x1eac, 0x1002), /* EM160R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), With eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b0),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), Non-eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b1),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* MV31-W (Cinterion) */
	{ PCI_DEVICE(0x1269, 0x00b3),
		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
	{  }
};
MODULE_DEVICE_TABLE(pci, mhi_pci_id_table);
Modified (added 3 lines at the bottom):

Code: Select all

;

static const struct pci_device_id mhi_pci_id_table[] = {
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0306),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx55_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx24_info },
	{ PCI_DEVICE(0x1eac, 0x1001), /* EM120R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(0x1eac, 0x1002), /* EM160R-GL (sdx24) */
		.driver_data = (kernel_ulong_t) &mhi_quectel_em1xx_info },
	{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
		.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
	/* T99W175 (sdx55), Both for eSIM and Non-eSIM */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0ab),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), With eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b0),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* DW5930e (sdx55), Non-eSIM, It's also T99W175 */
	{ PCI_DEVICE(PCI_VENDOR_ID_FOXCONN, 0xe0b1),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	/* MV31-W (Cinterion) */
	{ PCI_DEVICE(0x1269, 0x00b3),
		.driver_data = (kernel_ulong_t) &mhi_mv31_info },
	/* 0d40 (HP Inc.) */
	{ PCI_DEVICE(0x03f0, 0x0a6c),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
	{  }
};
MODULE_DEVICE_TABLE(pci, mhi_pci_id_table);
Were you successful in building this for OpenWRT?
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

Just a quick update on building the mhi driver for the HP variant. It is now finally included in the very latest mainline kernel build 6.2-rc7 I noticed not long ago:

Code: Select all

	/* T99W175 (sdx55), HP variant */
	{ PCI_DEVICE(0x03f0, 0x0a6c),
		.driver_data = (kernel_ulong_t) &mhi_foxconn_sdx55_info },
I've not tried to build the latest kernel for testing since I had previously built with manual edits but at least it is now included for future kernels.
Muhannad
Posts: 9
Joined: Thu Sep 08, 2022 7:40 pm
Has thanked: 1 time
Been thanked: 0

Re: T99W175 - enable AT/COM port

Post by Muhannad »

mtl26637 wrote: Mon Sep 05, 2022 11:45 am Luckily ModemManager also recognized the modem without edits and everything seems to be working properly under linux (ubuntu). I was expecting to have to add the HP variant to ModemManager as well but fortunately it was recognized by default.
I would really like to use this Modem under Linux.... Which version of Ubuntu/ModemManager did you use?

I'm using fedora 37 with 6.2 Kernel and the modem is showing up under devices. But unfortunately i cant get it working with ModemManager. Tried 1.18.12 and 1.20.x so far. i don't think that 1.21.4 will help either because i couldn't find no mention of "0a6c" in its source code just this Comment

mmcli reaches Timeout when i scan for modems:

Code: Select all

bash-5.2# uname -r
6.2.2-300.fc37.x86_64
bash-5.2# lspci | grep Wireless
00:07.0 Wireless controller [0d40]: Device 03f0:0a6c
bash-5.2# ls /dev | grep wwan
wwan0at0
wwan0at1
wwan0mbim0
wwan0qcdm0
bash-5.2# mmcli -V
mmcli 1.18.12
Copyright (2011 - 2021) Aleksander Morgado
License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

bash-5.2# mmcli --scan-modems
successfully requested to scan devices
bash-5.2# mmcli --list-modems
error: couldn't create manager: Timeout was reached
mtl26637
Posts: 321
Joined: Mon Jul 29, 2019 12:35 pm
Has thanked: 3 times
Been thanked: 102 times

Re: T99W175 - enable AT/COM port

Post by mtl26637 »

When I first started playing with this modem I started out on Ubuntu. I installed the latest version of the OS. I then built latest kernel, ModemManager, libqmi, libmbim and installed. As far as versioning, I'm not real sure what versions they were, they would have been latest around 6 months ago however.

You have to unlock/enable the modem using the built in scripts for FCC unlock in ModemManager which are located in "/usr/share/ModemManager/fccunlock.available.d". There is no script for the HP variant so you have to copy the 2 files for the lenovo version which are named "105b" and "105b:e0ab". Copy "105b" to "03f0" and copy "105b:e0ab" to "03f0:0a6c". You then have to link or copy all of the scripts located in the aforementioned directory into "/usr/lib/ModemManager/fcc-unlock.d". You might even link or copy them to "/etc/ModemManager/fcc-unlock.d" in case ModemManager is looking for them in "/etc". Once the scripts are copied restart and it should find the HP variant.

Based on the fact you have "wwan" devices, it seems everything is already finding everything correctly? Have you tried to enable the modem using "mmcli" commands? Can you access your debug logs from startup to see what all is happening with ModemManager? You could also run ModemManager in debug mode to track down where things are failing. If all else fails you might try to run the fcc-unlock scripts using "qmicli". Seems I recall that worked for me at some point. It's been around 6 months since I've used the ubuntu setup so all of this is just off memory so I could be missing some things.
Post Reply

Return to “Misc Modem Cards and Dongles”