Skip to content
control an owi robotic arm edge via your snom phone
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

snom robotic arm remote control



Used hardware



For this project i used an Raspberry Pi 2 but the steps shoud be more or less the same on all Debian-based distributions.

If u use an Raspberry Pi i recommend to install the latest version of Raspbian Lite.

No special steps are needed, just follow the installation instruction.

Udev rule

Normaly when u connect the OWI robotic arm via USB, normal users dont have the rights to write to that device.

To prevent the usage of sudo everytime u want to control the robotic arm u can apply an owi.rules.

Just copy the owi.rules to /etc/udev/rules.d.

Web server

To deliver the xml/php-files to the phone we need a web server with php. I use lighttpd because its small and fast but for sure u can use Apache or nginx if u want.

Install lighttpd + php and reload lighttpd:

$ sudo apt-get install lighttpd php5-cgi
$ sudo /etc/init.d/lighttpd force-reload

Copy the php/xml-files to your web server directory. Usually /var/www/html/

Compile the OWI Robotic Arm Edge USB-commandline tool

First install an c-compiler and some dependencies:

$ sudo apt-get install build-essential libusb-1.0-0 libusb-1.0-0-dev pkg-config

Now it can be compiled:

$ cd src/
$ gcc -v -Wall robot_arm.c `pkg-config --libs --cflags libusb-1.0` -o robot_arm

After that u have an executible "robot_arm" in your directory. Connect now the OWI robotic arm and do a first test.

Swich the light of the robot on:

./robot_arm 00 00 01

and off:

./robot_arm 00 00 00

If u got a message like Permission denied make sure u applied the udev rule.

Copy the "robot_arm" executable to your web server directory. Usually /var/www/html/


The snom VoIP-phones can handle mjpeg-streams but only as a backgroundimage on the idle-screen. With the help of a little tool called mjpeg-streamer its possible to generate snapshots from a stream that can be shown on the phone via the xml-minibrowser.

Compile mjpeg-streamer

First install buildtools,svn and other dependencies:

$ sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev

Clone the mjpeg-streamer code:

$ svn co svn:// mjpg-streamer

The current version of mjpeg-streamer has a bug but the community build a patch to fix that.

To apply the patch, go to the mjpeg-streamer code directory:

$ cd mjpg-streamer/mjpg-streamer

Copy the mjpeg-streamer-patch into the current directory and apply the patch:

$ patch -p0 < input_uvc_patch

Compile and install mjpeg-streamer:

$ make USE_LIBV4L2=true clean all
$ sudo make install

Allow the web server to control mjpeg-streamer by adding the user www-date to the video group:

sudo usermod -aG video www-data

Setup the snom phones

Customize the config-files:

  • Change the user_name (shoud be uniqe in each config file)
  • Change the user_host (shoud be the same in both config files)
  • Replace the IP-address (and ONLY the IP-address) of ALL URLs ( in the config file with the IP of your web server.
    • 15 URLs in snomD345 config
    • 3 URLs in snomD765 config

Now import the config files on the snom phone: Image of uploading an settingsfile to a snom VoIP phone

Browse to the webinterface of the snom phone:

  1. Click on Advanced
  2. Tab Update
  3. Browse to the config file on your filesystem
  4. And Load the config file

After that your phone reboots automaticly and applies the settings from the config-file.



You can’t perform that action at this time.