Our original development was on a Colibri IMX6ULL where we were able to access and manage the usb0 interface through NMCLI and allowed us to access our board with RNDIS when our other networks were disconnect. I am able to access the AM62 board in a Mallow carrier through the USB port when accessing Tezi to install the OS, however once the OS is installed I’m not seeing usb0 as an available interface.
Is there something I can do to access that interface once the OS is installed?
Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!
Did you like my answer?
Hello,
To access the usb0 interface on a Verdin AM62 module once the OS is installed, similar to how you did with the Colibri iMX6ULL, you’ll need to ensure that the USB RNDIS gadget support is enabled and properly configured in the Linux kernel and that the necessary services or configurations are set up in the user space to manage the interface.
Here are the steps to enable and access the usb0 interface for RNDIS communication:
Kernel Configuration: Verify that the Linux kernel is configured with support for USB gadget functionality, specifically the RNDIS protocol. This typically involves enabling CONFIG_USB_GADGET, CONFIG_USB_ETH, and CONFIG_USB_GADGET_VBUS_DRAW among others in the kernel configuration. For the Verdin AM62, you might need to customize the kernel configuration via Yocto or directly if you’re building the kernel separately.
Device Tree Configuration: Ensure that the device tree is correctly configured to support USB gadget mode on the USB port you’re using. This might involve specifying the correct USB mode (dr_mode = "peripheral") in the device tree for the USB controller.
USB Gadget Configuration: On the software side, once the OS is running, you need to configure the USB gadget settings to enable the RNDIS function. This is typically done by writing to files in the /sys/kernel/config/usb_gadget/ directory, setting up things like the device ID, manufacturer, serial number, and configuring it to use the RNDIS protocol.
Network Configuration: Once the RNDIS gadget is set up, the usb0 network interface should appear in the system. You can then use nmcli or other network management tools to configure the IP settings for this interface. You might need to set up a static IP or use DHCP depending on your network setup.
Automating the Process: To automate the setup of the USB RNDIS gadget on boot, you can create a systemd service or an init script that runs the necessary commands to configure the USB gadget and network settings.
If after following these steps, the usb0 interface is still not available, double-check the kernel log (dmesg) for any errors related to the USB gadget setup or the RNDIS configuration. It’s also worth verifying that all necessary kernel modules are loaded.
Remember, the exact steps can vary based on the specific Linux distribution and version you are using
Please, also check if these links can help you solve your problem:
Could you please specify which USB0 interface you are not seeing? Is it the USB interface on the Linux running on the Verdin AM62 SOM, or is it a USB interface on your development machine that you expect to appear when you connect the Mallow board to it?
For the first case, please check this article. If you want your development machine to access the Mallow board through RNDIS, you need to enable USB device mode on the Verdin AM62 side .
Additionally, please specify which OS image you have installed on the Verdin AM62
Sorry for not specifying. I am running Torizon. I am referring to the USB C port on the Mallow carrier board that is used for the RNDIS to view Tezi with VNC. On the Colibri board we used this port to be able to access the web server running on the board even if the ethernet and wifi are disconnected.
I will look into the links provided and post back if that solves the issue. Thank you.
I have a script set up to set the RNDIS up. Is there a way to include that into the TorizonCore builder that would run it when the OS is installed or is there another way to set this up on each instance of hardware?