VMware Didn’t See My USB Modem — Here’s How I Fixed It (Huawei E3531)
After quite a long time, I recently had to set up an SMS gateway on a virtual server for a customer again. Historically, I used Siemens/Cinterion MC35i modems for this purpose, but aside from their bulky size, I disliked the fact that they required external power.
Over time, I transitioned to using Huawei E3131 USB modems instead. These are small USB “sticks” that generally just need to be plugged into a USB port, and they work right away. I’ve deployed dozens of these devices without a single issue. Unfortunately, they’ve become nearly impossible to find these days — even second-hand.
While researching alternatives, I found that many e-shops are currently clearing out Huawei E3531 modems in bulk. Although these devices are outdated for internet access, they’re still perfectly suitable for sending SMS messages. What’s more, their price is ridiculously low — as little as 199 CZK (including VAT) per piece on some websites.
Naturally, I ordered a bunch of them. Once they arrived, I plugged one into a VMware-based environment for testing — only to be met with immediate disappointment: VMware didn’t recognize the USB modem.
So I began investigating.
Step 1: Check USB Passthrough in VMware
[root@localhost:~] esxcli hardware usb passthrough device list
Bus Dev VendorId ProductId Enabled Can Connect to VM Name
--- --- -------- --------- ------- ------------------------- ----
1 3 12d1 15ca false no (passthrough disabled) Huawei Technologies Co., Ltd. E3531 3G/UMTS/HSPA+ Modem (Mass St
As you can see, the device presents itself as a Mass Storage device. I’ve seen this before with the Huawei E3131 on Linux — you need to switch the device into the correct mode using usb-modeswitch. The minor issue is that VMware neither includes this utility nor allows you to install it.
Two Workarounds
After some digging, I found two possible solutions:
1. Flash “stick firmware” to the modem that makes it always present itself as a serial modem (which is exactly what we need). Unfortunately, I couldn’t find an official firmware version for the Czech Republic, and I wasn’t keen on flashing Polish or Slovak versions.
2. Use AT commands to switch the mode manually — a lesser-known method but one that works reliably. I chose this route using my Linux workstation.
Manual Mode Switching with AT Commands (on Linux)
Here’s a step-by-step guide:
1. Plug in the Modem
# lsusb
...
Bus 001 Device 008: ID 12d1:15ca Huawei Technologies Co., Ltd. E3531 3G/UMTS/HSPA+ Modem (Mass Storage Mode)
...
2. Install usb-modeswitch
# apt install usb-modeswitch usb-modeswitch-data
3. Replug the Device
This applies the mode switch and the device changes its mode:
# lsusb
...
Bus 001 Device 010: ID 12d1:1506 Huawei Technologies Co., Ltd. Modem/Networkcard
...
4. Install minicom and Query Supported Modes
# apt install minicom
# minicom -D /dev/ttyUSB2
Enter the following command in the minicom interface:
AT^SETPORT=?
You should get something like:
^SETPORT:1: MODEM
^SETPORT:2: PCUI
^SETPORT:3: DIAG
^SETPORT:10: 4G MODEM
^SETPORT:12: 4G PCUI
^SETPORT:6: GPS CONTROL
^SETPORT:13: 4G DIAG
^SETPORT:5: GPS
^SETPORT:A: BLUETOOTH
^SETPORT:16: NCM
^SETPORT:A2: SD
^SETPORT:A1: CDROM
5. Set Correct Modes and Restart the Modem
Send:
AT^SETPORT="FF;1,2,3" # Enables Modem, PCUI, and DIAG; disables others
AT^RESET # Resets the modem
Replug the device and verify with:
AT^SETPORT?
Expected response:
^SETPORT:FF;1,2,3
Final Verification in VMware
Now check USB passthrough again in VMware:
[root@localhost:~] esxcli hardware usb passthrough device list
Bus Dev VendorId ProductId Enabled Can Connect to VM Name
--- --- -------- --------- ------- ------------------------- ----
1 3 12d1 1506 true yes Huawei Technologies Co., Ltd. Modem/Networkcard
Success — the modem is now fully operational within VMware and ready to send SMS messages as expected.