Arduino Uno uses a separate chip for USB to UART interface. As a result it will always look like a UART (/dev/ttyUSBx
or /dev/ttyACMx
) on the Pi, and the only way to exchange information will be to open the UART (with the right baudrate!) and send data to the Arduino, which then can reply and tell what's connected to it.
Arduino Leonardo / Due controllers implement the USB communication directly. On these boards, it's possible that the Arduino will present itself as a different device class, depending on what's connected to it. E.g. if you connect an NFC Reader, the Arduino could connect as a keyboard (USB HID - human interface device), which will allow you to read a password from the NFC and type it directly in the password prompt.
In both cases, the actual logic detecting what's connected to the Arduino is up to you to implement.
In addition to lsusb
and dmesg
, there is udevadm info
which is able to show a lot of info about a USB device, including human-readable vendor and model name strings.