To get up and running Artisan under Linux using Phidgets is not completely trivial (but doable). While the installation of Artisan should not pose any problem if the installation instructions are followed, getting Artisan to read data from connected Phidgets needs some preparation.
To allow an app to accessing data from a Phidget requires the installation of a device driver on for the corresponding OS platform. Additionally, most modern Linux configurations restrict the access to USB devices to the root user by default. Here are instructions on how to install the Phidgets device driver and allow any user to access Phidgets connected via USB.
Phidgets driver installation
On Linux the phidgets driver has to be installed from source code. The compilation of this source requires the libusb-1.0 development libraries to be installed.
Install the libusb development package
Type the commands after the sharp sign into a terminal shell.
- on CentOS/Redhat
# sudo yum install libusbx-devl
- Ubuntu/Rasbian/Debian
# sudo apt-get install libusb-1.0-0-dev
Install the Phidgets libs
Download the libs from https://www.phidgets.com/downloads/phidget22/libraries/linux/libphidget22.tar.gz
# cd /tmp
# wget https://www.phidgets.com/downloads/phidget22/libraries/linux/libphidget22.tar.gz
Compile and install the libs
# tar zxvf libphidget22.tar.gz
# cd libphidget-*
# cd libphidget-*
# ./configure
# make
# sudo make install
By default the phidget libs are installed in /usr/local/lib. However, some system like Raspbian do not search that path for libraries by default. In that case you either ask configure to install the libraries in /usr/lib using the following command instead of the above sequence
./configure --prefix=/usr && make && sudo make install
or you add /usr/local/lib to the system-wide library path
echo /usr/local/lib >> /etc/ld.so.conf && sudo ldconfig
or you add /usr/local/lib in your local shell every time
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Extend the USB access rules
Next we install the udev rules file for Phidgets to allow access to USB devices for non-root user. Note that this is documented in some detail in the Phidgets documentation for Linux under Advanced Uses.
# cd /tmp/libphidget22-*
# sudo cp plat/linux/udev/99-libphidget22.rules /etc/udev/rules.d
for the legacy Phidgets21 driver the path in the above line is:
# sudo cp plat/linux/udev/99-libphidget22.rules /etc/udev/rules.d
for the legacy Phidgets21 driver the path in the above line is:
# sudo cp udev/99-phidgets.rules /etc/udev/rules.d
Now we have to either reboot or enter the following commands to restart the udev system respecting those new rules.
# sudo udevadm control --reload
EDIT: on some systems (e.g. Raspbian) the udevadm command seems not to be enough to establish the new rules. A reboot should work in any case.
Testing the Driver
To test the driver installation you can download the HelloWolrd Phidgets test
# cd /tmp
# wget https://www.phidgets.com/downloads/phidget22/examples/c/Manager/Phidget22_HelloWorld_C_Ex.zip
# unzip Phidget22_HelloWorld_C_Ex.zip
# cd HelloWorld_Example
# gcc HelloWorld.c -o HelloWorld -lphidget22
# ./HelloWorld
if the above fails to list your connected Phidgets and only
# sudo ./HelloWorld
list them correctly, you need to install the udev rules (or reboot after installation).
If the Phidgets HelloWorld does not list your Phidgets, Artisan will not be able to attach to them.
Configure Artisan
Finally, we need to select the Phidget type (here a 1048 module) as main device in Artisan via the Device Assignment dialog (menu Config >> Devices).
Thanks to Rob Gardner for his support on this!