PiMSO, is a Raspberry Pi controlled 200 Msa/S mixed signal oscilloscope. Depending on your application, it can be configure to use the Midori browser on the Pi GUI or access remotely via the internet. Since the PiMSO GUI is web based, You can also control it from a browser on your tablet or smart phone. But what happens when you are at a location that there are no convenient access to a network? For this project I'll demonstrate how to build a Raspberry Pi based oscilloscope that is also a Wireless Access Point.
As a bare minimum you'll need the Raspberry Pi and a Ralink RT5370 based Wi-Fi dongle. For this project I used the Tenda W311M from MicroCenter, primarily because it is Access Point capable and inexpensive. An even less expensive dongle that based on the same Ralink RT5370 chip from Comfast can be purchased from Aliexpress for less than $5 inc S/H. A quick search on Aliexpress for RT5370 should yield a few other options. If you don't have a MSO-28 you can still try it out, the WebMSO28 GUI will run regardless if you have the MSO-28. It'll just show "NO DSO".
If you don't want to roll your own, you can grab a pre-configured Raspian distro from here and skip to Step 6. Otherwise here is how to roll your own on top of your favorite distro.
Update: An Intel Edison based oscilloscope is available here http://www.instructables.com/id/Edison-Scope/
Step 1: Setting up the Raspberry Pi1. Grab the latest version of Raspian from http://www.raspberrypi.org/downloads. Follow the raw images installation instruction provided on this site http://elinux.org/RPi_Easy_SD_Card_Setup.
2. Boot up the Raspbian and set the it to boot into command line.
Step 2: Package Installation1. Gain root privilege.
2. Update the package list.
3. Install the necessary packages.
apt-get install git-core build-essential nginx hostapd iw minicom usbmount dnsmasq libfcgi-dev
4. Go to the home directory.
cd / home/pi
5. wiringPi is not necessary if you don't have PiLCD, but it is nice to have for future I/O control.
git clone git://git.drogon.net/wiringPi
6. Grab and install the WebMSO-config.git so the Pi will recognize MSO-28 and MSO-19
git clone git://github.com/tkrmnz/WebMSO-config.git
cp /home/pi/WebMSO-config/74-linkmso.rules /etc/udev/rules.d/.
7. At this point plug the MSO-28 into the Raspberry Pi, you should see it listed under /dev as MSO-28-0.
Step 3: Setting up the web server1. Edit the nginx default file.
Change the nginx default root directory to /var/www
2. Also add the following block for fcgi port forwarding.
3. Copy the proxy.conf to /etc/nginx
cp proxy.conf /etc/nginx/.
The content of the proxy.conf is shown below.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
4. Check to see if the gzip is enabled in the /etc/nginx/nginx.conf
un-comment gzip on;
5. Create the webpage folder
git clone git://github.com/tkrmnz/WebMSO28fcgi.git
cp -rf * /var/www/.
7. Start the nginx web server.
At this point nginx should start serving the web page. ifconfig to get your ipv4 address and access it via a browser from a different computer on the same network.
Step 4: Setting up the FCGI server1. Add execution privilege of the MSO28 fcgi driver in the /var/www/fcgi-bin directory.
chmod +x /var/www/fcgi-bin/mso28ctl.fcgi
2. Create a temporary ram drive for the mso28 fcgi driver to store the captured data.
mount -t tmpfs -o size=20m tmpfs /mnt/tmp
ln -s /mnt/tmp /var/www/fcgi-bin/tmp
3. Grab and install the spawn-fcgi and mso28ctl.fcgi
git clone git://github.com/tkrmnz/mso28fcgi.git
copy spawn-fcgi-1.6.3.tar.bz2 to /home/pi and unzip the spawn-fcgi
cp mso28fcgi/spawn-fcgi-1.6.3.tar.bz2 .
tar -xvjf spawn-fcgi-1.6.3.tar.bz2
Install the spawn-fcgi
cp src/spawn-fcgi /usr/bin/.
Copy the init script from /home/pi/mso28fcgi to /etc/init.d
cp /home/pi/mso28fcgi/spawn-fcgi1 to /etc/init.d/.
chmod +x /etc/init.d/spawn-fcgi1
4. Compile and copy the mso28ctl to /www/var/fcgi-bin
5. You can test the installing by starting the spawn-fcgi using
You should be able to see the blinking indicator next to the '''Stby''' above the timing window of the WebMSO28 client page.
If you see No MSO, then your spwan-fcgi is not running.
To stop the spawn-fcgi '''ctrl-z''' and kill the process
fuser -k 9000/tcp
6. To auto start spawn-fcgi on boot.
update-rc.d spawn-fcgi1 defaults
To remove spawn-fcgi from auto boot.
update-rc.d -f spawn-fcgi1 remove
At this point server works with ethernet cable.
Step 5: PiMSO Access Point setup1. Grab WebMSO28AP files from Github.
git clone git://github.com/tkrmnz/WebMSO28AP.git
2. Copy the various conf files to their directories.
cp dnsmasq.conf /etc/.
cp hostpad.conf /etc/hostapd/.
cp hosts /etc/.
cp interfaces /etc/network/.
Add DAEMON_CONF="/etc/hostapd/hostapd.conf" to /etc/default/hostapd
Look for DAEMON_CONF="", insert the following
Enable the hostapd and restart dnsmasq
update-rc.d hostapd enable
Step 6: Connecting to PiMSO
you should be able to see the WebMSO28 web client.
If you have a PiLCD, go to Step 7, otherwise you are done.
Step 7: PiLCD Setup
One application is for a headless Raspberry Pi with a Wifi dongle to scan, select and connect to nearby Wifi Access Points.
The PiMSO project demonstrates how the PiLCD module can be used to provide a convenient way for the user see the Access Point and URL info of the PiMSO, it will also display current IPV4 address of the Ethernet connection.
1. In addition to wiringPi, you will also need nslookup, which is available in the dnsuitls package.
apt-get install dnsutils
2. Grab and install the PiLCD project from Github
git clone git://github.com/tkrmnz/PiLCD.git
3. Copy the LCDinit scrip to init.d
cp LCDinit.sh /etc/init.d/.
chmod +x /etc/init.d/LCDinit.sh
4. you can test PiLCD by typing
You should be able to see the Wifi AP and URL information and Ethernet IPV4 by spinning the knob.
The LCDinit will execute the lcd_ip2 driver from PiLCD directory.
To run the LCDinit.sh on boot, do the following
update-rc.d LCDinit.sh defaults
To remove it from boot
update-rc.d -f LCDinit.sh remove