tcwan wrote:
AFAIK libusb-0.1.x implemented blocking I/O so it is not possible to poll for data from the NXT without sending any commands first.
That might be true, however I can't think of a situation where you want to do that (polling data from the NXT without sending any commands first). As I understand it, you can always only get data if you ask for it first. So this shouldn't be a problem. As long as you're using direct commands of course. For our MATLAB toolbox, we're using libusb-0.1.x on Linux and can apparently do everything we need and everything that is possible with PC<->NXT communication.
tcwan wrote:
Unfortunately I couldn't get libusb (0.1.x or 1.0x) working on Mac / Windows so those platforms are still reliant on the Fantom drivers.
I myself couldn't get libusb 0.1.x to work from MATLAB with the NXT on Windows. The libusb demo examples in C++ worked. They also worked for other devices via MATLAB. And IIRC, there were C(++) apps using libusb-0.1.x on Windows that worked with the NXT. To add more strangeness: The whole thing via MATLAB once worked with a certain LeJOS firmware! And the same command sequence for libusb from MATLAB worked on Linux.
So there was indeed something very strange going on with libusb and Windows and certain conditions (i.e. calling libusb from MATLAB and trying to talk to an NXT).
On the other hand, NXT_Python (predecessor to nxt-python) was based on pyUSB, which in turn uses libusb. And even though I myself couldn't get it to run on Windows (but due to other Python related package problems), apparently other people could. Nowaday, nxt-python also has a Fantom backend. But still: Using libusb on Windows with the NXT is somehow possible!