Create SD Image Version 0.7.4

From HiveTool
Jump to: navigation, search

Hivetool 0.7.4 image is now available

Download it here;

It does not include HiveControl like the HiveConTool version.

hivetool074.img      5856092672 bytes  2474147900 bytes

md5sum  hivetool074.img  2e26e8f266870cebcd51bf365d861559
sha1sum hivetool074.img  c855c8c1175866bd52ed8143490d320011323108

md5sum  7cdca1e73a5d81e3c70909961c6ea4b9
sha1sum  ff504657257fdf13905a1ad24fd2f2eab5af1562

Important Notes:

  1. May not unzip on Apple Mac using Unarchiver.
  2. Image is greater than 4 gig so it will not fit on FAT32 formatted memory device.
  3. It doesn't automatically expand to fit the memory card.


  1. The HX711 python driver based on PIGPIO library (HX711py) doesn't work on the model A+ or B+. Use the old HX711 driver based on the wiringPI library.


Bug Fixes

1. Set GPU_MEM, GPU_MEM_256, GPU_MEM_512, and GPU_MEM_1024 for different Pi models in config.txt. Maybe:


2. Put sanity checks, retrying, and error logging in to prevent bad readings from DHT22. See for details.

3, Update the SQL database creation scripts to reflect the new schema with battery voltage.

4. Use and NOT hive_stats4wDownload.

5. Fix hive so it will insert a NULL instead on nothing in the hive_parameters table if hive elevation is left blank.

6. Change DHT22 code to Adafruit

7. Fix error at end of hivetool.log if is not executable.

Feature Request

  1. add latest HiveControl software, debug HTML conflicts, restrict both apps from uploading
  2. implement battery voltage monitoring using channel B of HX711, send it to and display it.
  3. add ability to upgrade & update, github installer like hivecontrol, log & display current version & rev.
  4. send host IP and MAC addresses to, use MAC for registration
  5. add scale calibration layman wizard (accept current zero weight, accept known weight)
  6. add ability to auto register with online database, minimize server blacklisting


Bug Fixes

  1. Done replace hx711 and dth22 code with fixed versions.
  2. Done add export LC_NUMERIC="en_US.UTF-8" to
  3. Done don't remove python tools when removing bloatware. Keep: wolfram-engine - a scientific platform, Idle and Idle3 - python language editors

Feature Request

  1. Done add Ryans Hive Controller code, not yet available in 074
  2. Done add xrdp, open62541 packages
  3. Done add Data Acquisition Daemon (DAD) code

Dad supports battery voltage monitoring and the rain gauge.


  1. Done Test most recent raspbian distro Jessie (4.1 Kernel)
  2. Done Removal of bloatware from Raspbian (games, educational, etc.)
  3. Done Hivetool Support Pi & Pi2 (auto detect preferred)
  4. Automatic removal of erroneous data from sensors
  5. Done Basic navigation from webserver index.html, especially and Hivestats with download.
  6. Menu driven selection & configuration of sensors (gpio 2,3 for DHT22s preassigned by menu default)
  7. Menu driven setup of essential parameters with choices that don't crash app when saving, grey out unused.
  8. Done Sensor calibration provisions (gain, offset)
  9. Display instantaneous sensor readings from config screen with read button
  10. Preload & configure Apache Webserver and database, Hivetool, sensor drivers for proven sensors.
  11. Update local & online hivestats graphs to display lux trend pen, (use latest hivestats with enhanced autoscaling for local)
  12. Network / wifi support out of the box seems to work well now, handle configuration on router side with DHCP reservation as may be needed.
  13. Add configuration menu item for naming pi, same as hivestats name?
  14. Minimize need to enter Raspiconfig, can timezone and time all be handled in hivetool config?
  15. Done Enable i2c & serial.

How the image was created

Get latest Jessie image

Download, verify the SHA-1 checksum, unzip, burn image.

Verify the checksum:


Unzip the image and copy it to the SD card

dd bs=4M if=2016-05-10-raspbian-jessie.img of=/dev/sdb


Jessie boots directly into the window system. Menu -> Preferences->Raspberry Pi Configuration

Set up Wi-Fi

1. Add your network information to /etc/wpa_supplicant/wpa_supplicant.conf. For an unencrypted open network with an ESSID of dlink:

vi /etc/wpa_supplicant/wpa_supplicant.conf

auth_alg=OPEN }

2. Wi-Fi auto reconnect to AP

Go to /etc/ifplugd/action.d/ and copy the ifupdown file to

cp /etc/ifplugd/action.d/ifupdown /etc/ifplugd/action.d/

Then copy the script provided with wpa supplicant to /etc/ifplugd/action.d/

cp /etc/wpa_supplicant/  /etc/ifplugd/action.d/ifupdown

Update, upgrade

update your system's package list and then upgrade all your installed packages to their latest versions:

sudo apt-get update
sudo apt-get dist-upgrade


rpi-update should probably only be run if you need to install the bleeding edge experimental firmware. It has a history of breaking the GPIO.

Update the GPU firmware

sudo apt-get install rpi-update
sudo rpi-update

Remove packages we don't need

sudo apt-get remove --purge penguinspuzzle scratch dillo squeak-vm squeak-plugins-scratch sonic-pi netsurf-gtk netsurf-common
sudo apt-get autoremove
sudo apt-get clean
rm -rf /home/pi/python_games
sudo rm -rf /opt/minecraft-pi NO! Don't do this if you want to use the video camera: sudo rm -rf /opt/vc

Install packages we need

sudo apt-get -y install gawk bc apache2 libusb-dev libgd-graph-perl libexpat1-dev sqlite3
sudo apt-get install dh-autoreconf libudev-dev libusb-1
pi@raspberrypi:~ $  sudo apt-get install dh-autoreconf libudev-dev libusb-1
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package libusb-1

Oops. What happened to libusb-1? Hope it is not needed ... OK, We'll go on without it ...

sudo apt-get install dh-autoreconf libudev-dev 

Install perl modules

sudo cpan GD::Text GD::Graph Date::Format XML::Simple DBI DBD::SQLite

Install HiveTool software

Create symbolic links to the hivetool log files:

sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html
sudo ln -s /home/hivetool/hive.conf /var/www/html
sudo ln -s /home/hivetool/hivetool.log /var/www/html

Patch perl module GD::Graph

The Perl Module, GD::Graph needs a patch to correctly draw a graph with two y axes. Note that the target directory changes with each new perl version. This time it is 5.20.2. Copy the patched file to it's proper location:

sudo cp /home/downloads/ /usr/local/share/perl/5.20.2/GD/Graph/

Web Server

Configure apache

  1. Link the cgi.load and include.load module to mods-enabled
    ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled
    ln -s /etc/apache2/mods-available/include.load /etc/apache2/mods-enabled
  2. Add .pl to AddHandler cgi-script
    sudo vi /etc/apache2/mods-enabled/mime.conf
    uncomment #AddHandler cgi-script .cgi (around line 219) and add .pl so it looks like:
    AddHandler cgi-script .cgi .pl
  3. add Includes and +ExecCGI to Options:
    sudo vi /etc/apache2/apache2.conf
    In stanza <Directory /var/www/>
    Options Indexes FollowSymLinks
    Options Indexes FollowSymLinks Includes ExecCGI
  4. Add index.shtml to DirectoryIndex:
    sudo vi /etc/apache2/mods-enabled/dir.conf
    DirectoryIndex index.html index.cgi index.php index.xhtml index.htm
    DirectoryIndex index.html index.cgi index.php index.xhtml index.htm index.shtml
  5. Set up apache to listen on port 8080 if using port forwarding:
    sudo vi /etc/apache2/ports.conf
    add Listen 8080
  6. Restart Apache
sudo apachectl restart   or      sudo/etc/rc4.d/S02apache2 restart

Set sudo user privileges for Apache

This is necessary to allow to read the sensors. Run visudo to edit the sudo config file:

sudo visudo

and insert this line in the "User privilege specification" section:

www-data ALL=NOPASSWD: /home/hivetool/, /home/hivetool/, /home/hivetool/,  /home/hivetool/, /home/hivetool/, /usr/local/bin/2591, /usr/local/bin/2561, /usr/bin/nice, /home/hivetool/, /usr/local/bin/hx711, /usr/local/bin/Seeed_DHT22

Create SQLite database

cd /home/hivetool
sqlite3 hivetool_raw.db
sqlite> .read create_hivetool_sqlite.sql
sqlite> .quit

Make it writable or will fail to save to the database.

sudo chmod a+w /home/hivetool/hivetool_raw.db
sudo chmod a+w /home/hivetool

Create a symbolic link to /home/hivetool/hivetool_raw.db from /var/www/html so and can access the database:

sudo ln -s /home/hivetool/hivetool_raw.db /var/www/html/

phpLiteAdmin ver 1.9.6

Install SQLite database administration tools.

sudo apt-get install php5 php5-sqlite
cd /var/www/html
sudo mkdir admin
cd admin
sudo cp /home/downloads/ .
sudo unzip

sudo cp phpliteadmin.config.sample.php phpliteadmin.config.php
vi phpliteadmin.config.php


$directory = '.';  


$directory = '..';

Install TEMPerHUM software

sudo apt-get update
sudo apt-get install dh-autoreconf libudev-dev libusb-1.0-0-dev cmake-curses-gui
cd /home/downloads
sudo git clone git://
cd hidapi
sudo ./bootstrap
sudo ./configure
sudo make
sudo make install
cd ..
#sudo git clone git://
#cd TEMPered
#sudo git clone
#cd TEMPered-v6-2015

Note: For TEMPered-v6-2015 in ccmake set

HIDAPI_HEADER_DIR                /usr/local/include/hidapi
HIDAPI_LIB                       /usr/local/lib/ 

git clone git://
sudo ccmake .

Then the sub commands: "c" to configure then "g" to save and go

sudo make
sudo make install

Add /usr/local/lib/arm-linux-gnueabihf/ to /etc/

sudo vi /etc/

So it looks like this:

include /etc/*.conf

Run ldconfig to pick up the new libraries

sudo ldconfig

Install Broadcom 2835 Library ver 1.5

Download and install the bcm2835 library:

cd /home/downloads
tar xvfz bcm2835-1.5.tar.gz
cd bcm2835-1.5
sudo make check
sudo make install

Install i2c support

  1. Install i2c tools
    apt-get install i2c-tools
  2. run raspi-config and turn on i2c

Install wiringPi library ver 2.32

  1. get wiringPi code from github and compile it
    cd /home/downloads
    git clone git://
    cd wiringPi
  2. Test
    gpio -v
    gpio readall
gpio -v
gpio version: 2.32
Copyright (c) 2012-2015 Gordon Henderson

DHT22 Temperature/Humidity Sensor

Groove Seeed - DHT22 with modified code. Note that the code has been modified to return the temperature and humidity in floating point instead of having to divide it by 10, and a few other "improvements".

  1. Install wiringPi libraries
  2. Get the DHT22 software
    cd /home/downloads
    sudo git clone
    cd Grove-RaspberryPi/Grove\ -\ Temperature\ and\ Humidity\ Sensor\ Pro
    sudo cp Seeed_DHT22 /usr/local/bin

Python DHT22 code from Adafruit

sudo apt-get install python-dev
cd /home/downloads
git clone
cd Adafruit_Python_DHT
sudo python install
cd examples

DHTxx Temperature/Humidity Sensor

This code uses the PiGPIO libraries (pigpiod).

  1. Download the DHT11/21/22/33/44 Sensor code from
  2. Unzip
  3. Compile
  4. Test
mkdir /home/downloads/DHTxx
mv /home/pi/Downloads/ /home/downloads/DHTxx
cd /home/downloads/DHTxx
gcc -Wall -pthread -o DHTXXD test_DHTXXD.c DHTXXD.c -lpigpiod_if2
./DHTXXD -g22
./DHTXXD -g27
sudo cp DHTXXD /usr/local/bin

Note that this code uses the Broadcom GPIO numbering so Ras Pi GPIO 2 <=> Broadcom GPIO 27 Ras Pi GPIO 3 <=> Broadcom GPIO 22

HX711 weight ADC


Note: The original hx711 code has been modified to use the wiringPi library and to fix 2 bugs.

  1. Download the software from gitHub
    cd /home/downloads
    sudo git clone
  2. replace hx711.c with hx711wp.c and add locking.h
  3. compile
    gcc -o hx711wp hx711wp.c -lwiringPi
  4. Copy hx711 command to /usr/local/bin:
    sudo cp hx711wp /usr/local/bin/hx711
  5. To read the battery voltage, copy hx711wp_chanB command to /usr/local/bin:
    sudo cp hx711wp_chanB /usr/local/bin/hx711wp_chanB

TLS2591 Lux Sensor

2591 Adafruit with modified code.

-rw-r--r-- 1 root root 10439 Aug  3 01:36 2591a.cpp
-rw-r--r-- 1 root root  3303 Aug  3 01:36 2591a.h
-rw-r--r-- 1 root root  1509 Aug  3 01:36 2591_pi_2.cpp
gcc 2591_pi_2.cpp 2591a.cpp -lwiringPi -o 2591 
cp 2591 /usr/local/bin

Add crontab entries

Edit crontab:

sudo crontab -e

Add to crontab:

# Check hive instruments every 5 minutes. Kill process after 3 1/2 minutes.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * timeout -s KILL 3.5m /home/hivetool/
# Check the server status. Kill process after 1 minute.
4,9,14,19,24,29,34,39,44,49,54,59 * * * * timeout -s KILL 1m /home/hivetool/ > /var/www/server_status.txt


Install VLC media software. Note that for the camera to work, it must be enabled by running raspi-config.

sudo apt-get install vlc

To automatically start the video streaming using Real Time Streaming Protocol to port 8554, add to /etc/rc.local

# start video stream
su pi /home/hivetool/

/home/hivetool/ should be:

raspivid -n -o - -t 0 -w 800 -h 400 -fps 24 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264

This method uses raspivid to streams video from the PiCam to vlc where is can be accessed with videoLAN, a free and open souce media player for Apple, Linux, Microsoft platforms at port 8554 using RTSP://hive.ip:8554

Access Point

sudo apt-get install hostapd isc-dhcp-server

gEDA Schematic/PCB layout software

sudo apt-get update
sudo apt-get install geda
sudo apt-get install pcb
sudo apt-get install gerbv
sudo apt-get install zip


uninstall RealVNC (This is a work around as now realvnc-vnc-server comes installed and breaks xrdp. xrdp is currently favored over realvnc as xrdp works with Microsoft Windows.)

uninstall RealVNC and install xrdp

apt-get purge realvnc-vnc-server
sudo apt-get install xrdp

fix mouse pointer

vi .xsessionrc
xsetroot -cursor_name left_ptr&


sudo git clone git://
# ### sudo apt-get install git build-essential gcc pkg-config cmake python python-lxml
sudo apt-get install cmake cmake-data python-lxml
# enable additional features
sudo apt-get install libexpat1-dev # for XML-encodingi  ### already done
sudo apt-get install liburcu-dev # for multithreading
sudo apt-get install check # for unit tests
sudo apt-get install graphviz doxygen # for documentation generation 

sudo cd open62541
sudo mkdir build
sudo cd build
sudo cmake ..
sudo make

select additional features

sudo ccmake .. 

press c to configure press g to generate and exit

sudo make

Install touchscreen pop up keyboard support

sudo apt-get install matchbox

Install I2S support

In /boot/config.txt uncomment dtparam=i2s=on:

sudo vi /boot/config.txt
# Uncomment to enable I2S MEMs microphone 6-9-16 AO

sudo reboot

Get asoc-i2s-loader code:

cd /home/downloads
git clone
cd asoc-i2s-loader

In /sys/kernel/debug/asoc/platforms get the platform and device name.

cat /sys/kernel/debug/asoc/platforms

Note: assoc/platform will not exist until dtparam=i2s=on is uncommented and the system rebooted!

In asoc-i2s-loader.c change .platform = "20203000.i2s" to 3f203000.i2s (two places)

Install the kernel headers to compile and the compile:

sudo apt-get install raspberrypi-kernel-header

in /etc/modprobe.d/raspi-blacklist.conf

blacklist snd_soc_wm8804
blacklist snd_soc_pcm512x
blacklist snd_soc_tas5713

To record:

arecord -D hw:0 -c2 -r 48000 -f S32_LE -t wav -v file.wav

Install Hivecontrol

  1. Download
  2. Unzip in /home/hivetool2.
  3. Copy /home/hivetool2/www/public_html/ files to /var/www/html/hivecontrol
  4. Set up virtual host on port 81
  5. Add path to phpSQLiteadmin to database file.
hive-data.db -> /home/HiveControl-master/data/hive-data.db

This may not be right, should link to /home/hivetool2?

Install Desktop Background and Icons

Write Image

Copy the image to another computer:

1. Remove the SD card from the Pi and on another computer, copy the image to a file:

dd bs=4M if=/dev/sdb of=/home/downloads/hivetool080rc2.img

2. Shrink the image:

3. Compress the image using zip:

zip hivetool080rc2.img

bash-4.2# dd bs=40M  if=/dev/sdb of=/home/downloads/hivetool080rc2.img
 379+1 records in
 379+1 records out
 15931539456 bytes (16 GB) copied, 596.492 s, 26.7 MB/s
./ hivetool074.img 

e2fsck 1.42.6 (21-Sep-2012) Pass 1: Checking inodes, blocks, and sizes Inodes that were part of a corrupted orphan linked list found. Fix<y>? yes Inode 13283 was part of the orphaned inode list. FIXED.


Inode 392946 was part of the orphaned inode list. FIXED. Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information

/dev/loop0: ***** FILE SYSTEM WAS MODIFIED ***** /dev/loop0: 141123/971040 files (0.2% non-contiguous), 1308188/3872384 blocks resize2fs 1.42.6 (21-Sep-2012) resize2fs 1.42.6 (21-Sep-2012) Resizing the filesystem on /dev/loop0 to 1412558 (4k) blocks. Begin pass 2 (max = 420793) Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 3 (max = 119) Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Begin pass 4 (max = 14259) Updating inode references XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX The filesystem on /dev/loop0 is now 1412558 blocks long.

# zip hivetool080rc2.img 
 adding: hivetool080rc2.img

(deflated 58%)
bash-4.2# md5sum 

bash-4.2# sha1sum 
$ md5sum hivetool074.img
 2e26e8f266870cebcd51bf365d861559  hivetool074.img

$ sha1sum hivetool074.img
 c855c8c1175866bd52ed8143490d320011323108  hivetool074.img

$ ls -l hivetool074*
 -rw-r--r-- 1 root root 5856092672 Feb 21 20:01 hivetool074.img
 -rw-r--r-- 1 root root 2474147900 Feb 21 20:07