If you monitor “dmesg --follow
” on the Jetson, and then plug in the USB device, what log lines are added from the USB plug-in? Is it correct that this device already functions on the Jetson the way you want it to when connecting to the other device over UART, and that only connectivity to the Windows system is in question?
I can’t say for certain, but I think there are some USB-to-ethernet devices used by some server farms and data centers already which do this. Basically, you plug it in to USB, and then the ethernet into the device. These would have drivers at the Windows side.
To export this one device to ethernet would be possible, but it would be some seriously difficult work. You’d then also need to develop your own driver on Windows.
Regarding devices already set up for converting USB over ethernet, this might still not be enough. I say this because most of the software for creating virtual USB devices will only work with “standard” devices (devices using standard drivers, e.g., HID class such as keyboard/mouse, mass storage class such as USB hard drives, so on). Serial UARTs (regardless of a PHY that is RS232 or RS485) are not standard. Those devices quite often have a driver already installed since they are so common, but they are specific to the chipset (FTDI is likely the most common). This means it is a custom driver, and one might need the driver source code to modify to expose it to a networking program (perhaps not too difficult on the Linux side if you have driver source code, but it still would not be “simple”).
Instead of exposing this as a USB device over ethernet you might consider writing software on the Jetson which simply works with the device with the ability to pipe a network connection to/from the device. I’m not sure about the RS485 additions since I don’t have any RS485 devices, but if it were just RS232 then it would read or write to a device special file (with ioctl calls if you need to administrate the device, e.g., to change RTS/CTS modes or change baud rates). I don’t have any RS485 devices, so I can’t tell you how it deals with multiple device addresses from the user space software side (maybe it has more than one device special file, or maybe it uses an ioctl call to switch device address, don’t know).
It is possible to write a program on Windows which looks like a serial UART, and have a program like PuTTY talk to it and not care whether it is virtual or physical. It won’t be easy and you’ll need to know how to write drivers on Windows. Perhaps it is just user space software on Linux.
I can’t vouch for this, but it might be of interest:
https://www.flexihub.com/usb-over-ethernet/
(keep in mind that the Linux side software requires 64-bit ARM architecture)