Project Summary
At the Cleveland VMUG events we will be using a new check-in system. The system consists of a Raspberry Pi, Edimax Wifi adapter and a DYMO thermal label printer to perform wireless iPad check-ins. The setup will sign-in preregistered individuals and capture data from walk-on attendees. Finally, producing a name tag label which is printed wireless to the DYMO LabelWriter 330. This is how it was accomplished!
Videos
Hardware Layout
The diagram is simple and straight forward but to give you a visual how things are related.
Prerequisites
Most important some sort of already existing Linux knowledge is highly recommended! This (updating + installing) will require a great amount of time since the Rasberry Pi’s processor is low in computational power and low IO through output since the Secure Digital memory card is generally slow. I started with a fresh image of Raspbian. At the time of writing, this tutorial is using version, 2014-09-09-wheezy-raspbian.
Let’s start by installing all the prerequisites libraries and binaries. Please complete the apt-get commands in order to prevent php5 installing apache2 since we are leveraging lighttpd.
sudo apt-get update -y sudo apt-get install dnsmasq lighttpd cups libcups2 libcups2-dev libcupsimage2 libcupsimage2-dev build-essential g++ -y sudo apt-get install php5-common php5-cgi php5-sqlite php5 -y
CUPS Installation & DYMO Driver
If you are using the pi user, add the pi user to the lpadmin (CUPS Admin) group:
sudo usermod -a -G lpadmin pi
After the installation of CUPS we will need to modify the following sections in /etc/cups/cupsd.conf to look like the following below. This will allow remote access to the CUPS Administration page and the CUPS web server will operate on all interfaces not just the localhost.
# Allow remote access Port 631 Listen /var/run/cups/cups.sock ... # Restrict access to the server... <Location /> # Allow remote access... Order allow,deny Allow all </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow all </Location>
Here we will download the Dymo CUPS drivers and compile them on the Raspberry Pi. Again, this step will take a little bit of time to complete.
cd ~ wget http://download.dymo.com/Software/Linux/dymo-cups-drivers-1.4.0.tar.gz tar -xzvf dymo-cups-drivers-1.4.0.tar.gz cd dymo-cups-drivers-1.4.0.5/ sudo ./configure sudo make sudo make install
After these changes have been made to /etc/cups/cupsd.conf, cycling the service is required and to ensure the new Dymo driver is found.
sudo service cups restart
Proceed over to the CUPS web interface to setup the Dymo printer at https://host:631/admin
Once you get to the login page and you are authenticated, proceed to add a printer by selecting Add Printer under the Administration tab.
Select your DYMO LabelWriter printer and press Continue.
Specify a Name for your printer, I’de recommend keeping it short in name.
Select the Model of the printer or choose the PPD file from compiling if it was not automatically detected. Press Add Printer!
After the printer is added, ensure the proper defaults are set for the printer such as Print Quality, Print Density and Media Size by going to Set Default Options under the Administration tab.
Finally, ensure the DYMO LabelWriter is set to the System Default printer which is located in the dropdown menu of the printer under the Printers tab.
lighttpd Setup
Add the pi user to the www-data group so that the default lightttp path can be written to by the pi user:
sudo chown www-data:www-data /var/www sudo chmod 775 /var/www sudo usermod -a -G www-data pi
To enable the server to handle php scripts the fastcgi-php module should be enabled and lighttpd reloaded:
sudo lighty-enable-mod fastcgi-php sudo service lighttpd force-reload
wlan0 Setup
During this section, we will give wlan0 a static ip address and ensure the interface is brought up at boot. Note this section and the dnsmasq sections are almost verbatim taken from, http://ariandy1.wordpress.com/2013/04/07/setting-up-wifi-access-point-with-edimax-ew-7811un-on-raspberry-pi/. These sections are placed here for linear order of operations and recap the article link above.
Edit /etc/network/interfaces, remove anything related to wlan0 then add this lines:
iface wlan0 inet static address 10.0.0.1 network 10.0.0.0 netmask 255.255.255.0 broadcast 10.0.0.255
To make sure, add ifup wlan0 inside /etc/rc.local file before exit 0 so it will look like this:
... ifup wlan0 exit 0
dnsmasq Setup
Stop dnsmasq before working on it:
sudo service dnsmasq stop sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig sudo touch /etc/dnsmasq.conf
Edit the newly create /etc/dnsmasq.conf and make it reflect the following contents:
interface=wlan0 expand-hosts domain=local dhcp-range=10.0.0.10,10.0.0.50,24h dhcp-option=6,10.0.0.1
Add the following to the /etc/hosts file to reflect the hostname of the Raspberry Pi for easy typing in the tablet web browser:
10.0.0.1 checkin checkin.local
hostapd Setup
The EW-7811Un features a Realtek RTL8192C depending on the revision. Since it uses a Realtek chipset you must use the Realtek’s version of hostapd. The majority of this following section was taken from, http://jenssegers.be/blog/43/Realtek-RTL8188-based-access-point-on-Raspberry-Pi. Proper credits goes to the author.
cd ~ wget https://github.com/jenssegers/RTL8188-hostapd/archive/v1.1.tar.gz tar -zxvf v1.1.tar.gz cd RTL8188-hostapd-1.1/hostapd sudo make sudo make install
Create the following file /etc/hostapd/hostapd.conf and tailor the following setting:
# Basic configuration interface=wlan0 ssid=VMUGCheckin channel=3 # WPA and WPA2 configuration macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=3 wpa_passphrase=YourPassPhrase wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP # Hardware configuration driver=rtl871xdrv ieee80211n=1 hw_mode=g device_name=RTL8192CU manufacturer=Realtek
Edit the following file to point to the newly created conf file above. Open up /etc/default/hostapd and make it reflect the following:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Enable the access point by restarting the hostapd service after all the changes:
sudo service hostapd restart
PHP Application
After everything, download the PHP binary bits included and extract everything to /var/www and follow the directions included in the 7z archive or download the complete Raspberry Pi below which includes all the work above including the application! Finally set 664 Unix permissions on the *.db (SQLite database) and modify variables as needed in settings.php. Replace the background.png and logo.png under the images directory.
You should now be complete!
Application links are http://<host>/admin.php for the Administrative Functions page and http://<host>/reprint.php for the Reprint Page.
Summary
This give you everything you need to setup the hardware portion of this project. The software portion is simple, extract and deploy. Please post any questions or comments below.
Downloads
- Download VMUG Wireless Checkin PHP Application Only: VMUGWirelessCheckin_v100.7z
- Download VMUG Wireless Checkin, COMPLETE Raspberry Pi Image: VMUGWirelessCheckinRaspberryPiImage_v100.7z* Compiled with DYMO Printer Drivers, Realtek hostapd, CUPS, Lighttpd with SQLite module. Working running version.
* Minimum 8gb SDHC required for the image!
* Username/Password – pi:vmug, root:vmug
Comments