I'm thinking about purchasing a digital oscilloscope, and looking at the Linux-USB device listings, I noticed there was advertisments for the PicoScope as being Linux compatible.
is the particular unit I'm thinking of, I may also consider getting one of the lesser cousins. In particular, spectrum analysis is something I'd be interested in as well as time-domain waveform display.
My concern however is the degree of Linux support. I went looking for a driver, and noticed they had two versions, a "32-bit" version (okay, x86, MIPS, SPARC, m68k, ARM, what exactly?), and a "64-bit" version (again, AMD64? IA64? Alpha? HPPA?). Immediately the alarm bells start ringing -- the same piece of code should compile for both, if need be using #ifdefs chosen from the kernel's .config to select the 64-bit and 32-bit parts... why do I need a special version for one or the other?
I downloaded the "64-bit" driver to have a look and see if it would compile against the kernels I run. I got presented with an RPM for Fedora 8 (which is now years old and unsupported by upstream).
stuartl@zhouman /tmp $ rpm2targz libps2_3000-3.6.4.4-1.x86_64.rpm
stuartl@zhouman /tmp $ tar -xzvf libps2_3000-3.6.4.4-1.x86_64.tar.gz
./
./usr/
./usr/local/
./usr/local/lib/
./usr/local/lib/libps3000.so.3.6.4
./usr/local/lib/libps3000.so.3
./usr/local/lib/libps3000.so
./usr/local/lib/libps3000.la
./usr/local/lib/libps2000.so.3.6.4
./usr/local/lib/libps2000.so.3
./usr/local/lib/libps2000.so
./usr/local/lib/libps2000.la
./usr/local/include/
./usr/local/include/libps3000/
./usr/local/include/libps3000/ps3000.h
./usr/local/include/libps2000/
./usr/local/include/libps2000/ps2000.h
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-t: Operation not permitted
tar: Exiting with failure status due to previous errors
stuartl@zhouman /tmp $ file usr/local/lib/libps3000.*
usr/local/lib/libps3000.la: libtool library file
usr/local/lib/libps3000.so: symbolic link to `libps3000.so.3.6.4'
usr/local/lib/libps3000.so.3: symbolic link to `libps3000.so.3.6.4'
usr/local/lib/libps3000.so.3.6.4: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
Ohh wonderful... x86-64. What is a kernel driver doing in /usr/local/lib? Or is it something purely userspace (in which case calling it a "driver" is false advertising)? And being x86-64, it looks like its useless on one of the machines I planned to use it with:
stuartl@zhouman /tmp $ uname -a
Linux zhouman 2.6.35.7-lm2f-nb #2 Wed Oct 13 00:42:58 EST 2010 mips64 ICT Loongson-2 V0.3 FPU V0.1 lemote-yeeloong-2f-8.9inches GNU/Linux
stuartl@zhouman /tmp $
Yes, the "64" in "mips64" means its a 64-bit system, just not an x86 64-bit.
So I have this dillema. I'm looking to purchase, I see claimed support for Linux, but I see no actual evidence of Linux support.
Is there some spec sheets to permit some of us to write a real driver for these things (or a truly open-source utility using libusb)? Is there any reason why the source code of these files is not provided? (What do we do if the libusb ABI changes?) Are there any plans to open this code up, or provide such specs? I'm sure you'll get overwhelmed with assistance in the maintenance if such code was open and freely obtainable.
If not I might have to keep looking, not worth AU$2500 if I can't use it.