Hi all,
I’m trying to get my LTE USB dongle (Huawei EE3372h-325) to work with TorizonOS and ModemManger. Currently it is recognized as a “USB Mass Storage device”, so I’m guessing I need usb_modeswitch to make it work.
My question is how I best go about this problem, should I:
- Make a dedicated container with usb_modeswitch, and still use the pre-installed ModemManager?
- Try to add usb_modeswitch outside of a container (how?)
Or are there other, easier ways to do this?
Cheers
Tim
Hi, I’m the Toradex AI Assistant. The Toradex Support team will follow up with you shortly!
Did you like my answer?

Hello Tim,
To get your Huawei EE3372h-325 LTE USB dongle working with TorizonOS and ModemManager, you’ll indeed need to use usb_modeswitch to change the device from a USB Mass Storage mode to a modem mode. Here’s how you can proceed:
-
Using a Dedicated Container for usb_modeswitch:
- This is the recommended approach as it aligns well with Torizon’s container-based architecture.
- You can create a Docker container based on a Debian image, which is compatible with Torizon.
- Inside this container, install usb_modeswitch using the package manager (e.g.,
apt-get install usb-modeswitch
).
- Ensure the container has access to the USB device by using Docker’s
--device
flag to pass the USB device into the container.
- Run usb_modeswitch within the container to switch the device mode.
-
Installing usb_modeswitch on the Host System:
- While possible, this method is less preferred as it deviates from the containerized approach of Torizon.
- You would need to access the TorizonCore shell and manually install usb_modeswitch using the package manager.
- This approach might require additional configuration to ensure compatibility with the rest of the system.
Additional Considerations:
- Ensure that ModemManager is configured to recognize the device once it is switched to modem mode.
- You may need to adjust permissions and access rights for the USB device within the container to ensure proper operation.
By using a container, you maintain the modularity and isolation benefits of Torizon, making it easier to manage dependencies and updates. This setup also allows you to easily replicate the environment across different devices or deployments.
Best regards,
Toradex AI Assistant
Please, also check if these links can help you solve your problem:
Is there a URL I can go to, to see the versions of packages (libraries) that are in the version of torizonOS we are using?.
Greetings @TimSiegrist,
This is a interesting use-case, this is the first I’ve heard of needing to explicitly change the mode on a USB based modem. Though after some quick research it seems this is common and expected, at least for Huawei EE3372 type USB modems.
Make a dedicated container with usb_modeswitch, and still use the pre-installed ModemManager?
You could try this. I imagine you would need to install usb_modeswitch
in a container, and then run the container and give it access to the USB device in question. Then in theory you could then switch modes in the container and it should persist outside of the container as well. That said I have not tried or tested this method so I can’t guarantee it will work without any issues.
Furthermore, in my research I saw it was necessary to run usb_modeswitch
on the USB modem on every boot. I guess powering the system down will reset the USB back to mass storage mode. This means you’ll need to automate this process on boot somehow with a script or service.
Try to add usb_modeswitch outside of a container (how?)
So if you want to do this outside of the container, then the recommended way would be to modify the Torizon OS image with Yocto and add usb_modeswitch
to the image. Depending on your experience with Yocto this may be quite a task.
I could also discuss this with the team and see if we could add it to the image ourselves by default. Though this request would take some time as we would need to discuss it and test it thoroughly. Keep that in mind if you are time sensitive, as you would need to explore another method while we discuss the request internally.
Best Regards,
Jeremias
1 Like
Hi there @jeremias.tx
Just to wrap up, I ended up creating a container with usb_modeswitch
installed, and I could access and switch modes on the device. However since there were some issues with the specific rule, on top of an internal discussion if we are proceeding with this LTE solution in particular (not related to a Torizon implementation), this topic was put on hold internally.
In any case, I guess usb_modeswitch
would be nice to have per default, since the ModemManager is also there. But I can also see that if this Modem is the only use-case where the tool is needed, it might be a bit overkill/unnecessary.
Best regards
Tim
Just to wrap up, I ended up creating a container with usb_modeswitch
installed, and I could access and switch modes on the device. However since there were some issues with the specific rule, on top of an internal discussion if we are proceeding with this LTE solution in particular (not related to a Torizon implementation), this topic was put on hold internally.
Understood, do let us know if something else comes up related to this that we could help with.
In any case, I guess usb_modeswitch
would be nice to have per default, since the ModemManager is also there. But I can also see that if this Modem is the only use-case where the tool is needed, it might be a bit overkill/unnecessary.
Well we’re generally okay with adding packages to the base image if it makes sense. Though this is on a need-basis of course. Let us know if you decide you would want us to try and pursue the viability of doing this.
Best Regards,
Jeremias