The hackfile he posts is a little confusing, because I do see mappings for JS0 through JS3. But I also see Retrobox mappings in there... Huh?
I see on the page he says:
I don't know what he means by that. jzIntv has command line flags for configuring up to 4 distinct HID joysticks. If UPCI reports itself as two HID joysticks, then in theory it should be possible to interface two UPCIs to jzIntv.
As for how the UPCIs get mapped to joystick numbers as reported by SDL? That's a little out of my control. Given the number of USB plug/unplug events that the UPCI seems to need to vary its configuration, if you have two connected, their mapping to joystick numbers could keep changing, which would be one source of confusion for sure. ie. they might swap slots with each other.
I suppose I could teach jzIntv to read the joystick name strings to bring some stability there, but for it to be a truly stable mapping, each UPCI would have to have some unique identifier so I could tell which one was which.
When trying to tell different models of joystick apart:
In general, don't rely on joystick name strings in USB (or Bluetooth). These are intended as human-readable strings, not as programmatic strings. These can vary for a single joystick model (ex: a joystick that can be renamed by the user). Alternatively, the same name can be used across different models and even different manufacturers (ex: some joysticks out there have a name of "joystick" or "").
Instead, you should rely on the VID and PID of the joystick, which respectively are the Vendor ID and Product ID. Vendor IDs (VIDs) are uniquely assigned by the USB-IF and the Bluetooth SIG to each implementing company. Bluetooth adds one more field to indicate whether the VID is from the USB table of vendors or the Bluetooth table of vendors.
When trying to tell different instances of the same model apart (ex: telling each UPCI apart):
If the USB device implements a serial number, then use this. This is a string that is defined by the implementing company (i.e. each vendor defines their own set of serial numbers and can overlap with other vendors). At the USB protocol level, it is implemented similar to how device name strings are implemented. However, not every USB device, especially joysticks, implements USB serial numbers. Since the UPCI is still actively getting firmware updates, then I recommend contacting the creator to see if he's willing to add serial number support.
Bluetooth devices can have serial numbers as well but I don't remember that part of the spec clearly. However, it is common for Bluetooth devices to be uniquely identified by their Bluetooth MAC address. However, there is an option in Bluetooth for a device to randomize its Bluetooth MAC to avoid privacy issues. Fortunately for you, this feature is not commonly used.