I don’t necessarily know how to change what you are seeing, but have some background information that might be useful when working on this.
ID 0955:7020” is a combination of the USB registry’s manufacturer’s ID and device ID (each manufacturer has a different device compared to another manufacturer even if the number is the same). The “
0955:” will show up on any hardware reporting itself as NVIDIA. The “
7020” is the specific device ID. Normally this would not change when rebranding, e.g., the text description “
NVidia Corp.” can probably be changed, but it is likely harder to change the “
0955:7020”. I say this because sometimes drivers use the ID for finding out if they are compatible. If you change the ID, and the ID is not relevant for a given chipset driver, then you might find that the computer at the other end which wants a device won’t be able to pick a correct driver. Maybe. You’ll have to test, but be certain you don’t pick an ID of manufacturer and device which belongs to someone else’s product (I recommend leaving alone the ID except when you are certain of what you are doing). See:
In some cases any change would require modifying the ROM/EEPROM, but for a device mode, in this case, it is using the Linux “USB Gadget” API to emulate devices. This means you are likely in luck, and can simply edit the example devices, although not everything can be edited. Go to this location on the Jetson:
egrep '(0955|7020)' *
The sample device mode is set up as a service. Some scripts are there as well for manual start/stop. Now examine this:
systemctl list-units | grep 'nv-l4t-usb-device-mode'
systemctl status 'nv-l4t-usb-device-mode'`
You can run any of these commands, and they do what they look like (default is that the service is enabled and running):
sudo systemctl stop nv-l4t-usb-device-mode
sudo systemctl start nv-l4t-usb-device-mode
sudo systemctl disable nv-l4t-usb-device-mode
sudo systemctl enable nv-l4t-usb-device-mode
.service” file is “
nv-l4t-usb-device-mode.service”. This is the one you would normally edit. The reason it is visible from
systemctl is due to the symbolic link to this file which is located at subdirectory(s) of “
/etc/systemd/system”. Notice that the content of this file lists the scripts which start or stop the service.
The Linux gadget interface is not “an NVIDIA thing”, it is a generalized Linux mechanism, which in turn is a kind of template for emulating the “standard driver class” devices. In other words, one basically has to fill in all of the details you’d see from a verbose
lsusb, and only works with “standard” device classes after you’ve put all of that information into the template. On your host PC you can the results of the gadget setup of the Jetson via:
sudo lsusb -d 0955:7020 -vvv
sudo for that much detail)
I don’t know what you specifically need to do for your case since part of that information might be in a an EEPROM or other ROM, while other parts are in the gadget API setup.
A document on the gadget API:
Note that part of what you see on the host PC could also be from
lsusb referring to the USB database via the idVendor (
0x0955) and idProduct (
0x7020). Other parts can be from the gadget setup. Some might be from an EEPROM (or just ROM).