Thursday, January 11, 2018

Access Your Raspberry Pi Remotely via XMPP Chat

How to remote-access a Raspberry Pi over the internet using an XMPP-based chat-bot — no port forwarding or dynamic DNS required. The chat-bot is written in C++ using the gloox XMPP client library, and communicates through a public Jabber server.

Setup diagram — Raspberry Pi chat-bot communicating with smartphone via XMPP

Typical setup — Raspberry Pi behind a firewall communicates with a smartphone via a public XMPP/Jabber server.

Building the chat-bot on Raspberry Pi

Tested on Raspbian Stretch Lite (2017-11-29). These steps work on any Debian-based Linux distro.

Step 1 — Log in to the Raspberry Pi shell (keyboard or SSH) and install dependencies:

sudo apt-get update
sudo apt-get install cmake git libjson-c-dev libgloox-dev openssl

Step 2 — Clone and build:

mkdir /home/pi/xmproxy
cd /home/pi/xmproxy
git clone https://github.com/hackboxguy/brbox
cd /home/pi/xmproxy/brbox/sources
cmake -H. -BOutput -DCMAKE_INSTALL_PREFIX=/home/pi/xmproxy/buildir -DAUTO_SVN_VERSION=OFF
cmake --build Output -- install    # add -j5 on quad-core Pi for faster build

Step 3 — Configure XMPP credentials and start the chat-bot:

cd /home/pi/xmproxy/buildir
echo "user: my-raspi-username@gmail.com" > xmpp-login.txt
echo "pw: super-secret-pw" >> xmpp-login.txt
export LD_LIBRARY_PATH=/home/pi/xmproxy/buildir/lib
/home/pi/xmproxy/buildir/bin/xmproxysrv --loginfile=/home/pi/xmproxy/buildir/xmpp-login.txt

Testing

Check on your Android phone's Hangouts (or any XMPP client) if my-raspi-username is online. Send help and the chat-bot will reply with the list of available commands.

Notes

For Google accounts, ensure Allow less secure apps is enabled on the Raspberry Pi's account.

The two XMPP accounts don't need to be on Google — any two Jabber accounts will work. See this guide for preparing Jabber accounts.

These steps work on any Debian-based Linux distro, not just Raspbian.

SOURCE CODE

github.com/hackboxguy/brbox — XMPP chat-bot sources and build instructions

Sunday, January 07, 2018

Flash XMPP ChatBot Firmware onto A5-V11 Router

Step-by-step guide to replace the stock Chinese firmware on an A5-V11 pocket router (~5 EUR) with an OpenWrt-based image that includes an XMPP chat-bot daemon for IoT applications.

What is A5-V11?

A low-cost (~5 EUR) Wi-Fi router capable of running OpenWrt Linux.

What is a5v11-xmpp-image?

A customized OpenWrt image that includes a C++ based XMPP client daemon for IoT applications. See this blog post for details on using it as a smart-home gateway.

Setup

As shown below, items 1–3 are required. Items 4–6 (USB-to-I2C converter and SSD1306 display) are optional — they help display the router's IP address on boot if you can't find it via your home router's DHCP client list.

A5-V11 setup: router, Ethernet cable, PC, and optional I2C display

Setup overview: A5-V11 router, Ethernet cable, PC (required), plus optional USB-to-I2C converter and SSD1306 display for IP readout.

Flashing steps

Step 1Download a5v11-xmpp-factory.uimg to your PC.

Step 2 — Connect an Ethernet cable between the A5-V11 and your PC.

Step 3 — Power on the A5-V11 with 5 V DC and wait ~1 minute until your PC gets an IP in the 192.168.100.x range.

Step 4 — Open 192.168.100.1 in your browser. You should see the Chinese OEM firmware page:

A5-V11 Chinese OEM firmware web UI

Chinese OEM firmware web interface — confirm your router shows this page.

Stop here if your page looks different. You may have the Qualcomm firmware variant — follow this other guide instead.

Step 5 — Click the language dropdown to switch to English:

Switching language to English

Switch the web UI language to English.

Step 6 — Navigate to Admin → Firmware Upgrade → Choose File, select a5v11-xmpp-factory.uimg (downloaded in Step 1), then click "Upgrade".

Step 7 — Confirm by clicking "OK":

First firmware upgrade confirmation

First confirmation dialog.

Step 8 — A second confirmation is needed — click "OK" again:

Second firmware upgrade confirmation

Second confirmation dialog.

Step 9 — The firmware upgrade begins:

Firmware upgrade in progress

Firmware flashing in progress.

Firmware upgrade completing

Firmware flash completing.

Step 10 — Wait about 40 seconds, then remove power and disconnect the Ethernet cable from the PC.

Step 11 — Connect the A5-V11 to your home router via Ethernet. Make sure your PC is also on the same network.

Step 12 — Power on the A5-V11 and wait until the red LED stops blinking.

Post-flash configuration

Step 13 — SSH into the router using hostname my-a5v11 with credentials root / brb0x.

If you can't find the router's IP, connect an I2C display to the USB port — the router prints its IP on boot:

A5-V11 displaying IP address on I2C OLED display

Optional: SSD1306 I2C display showing the router's IP address after boot.

Step 14 — Change the default password:

passwd

Step 15 — Set your XMPP (Jabber) login credentials (replace with your own):

echo "user: test-slave-account@xabber.de" >/etc/xmproxy/xmpp-login.txt
echo "pw: chatbotpw" >>/etc/xmproxy/xmpp-login.txt
reboot

Step 16 — After reboot, your device should appear online in your smartphone's Xabber chat client.

Next steps: Follow this blog post to use the A5-V11 XMPP chat-bot as an IoT gateway for home automation.

Saturday, January 06, 2018

DIY Router UPS for Under $2 with a Battery Bank

A low-cost uninterruptible power supply for your broadband Wi-Fi router using a USB battery bank and a 5 V to 12 V DC boost cable (~1 EUR from AliExpress). Keeps your router running through short power outages so you don't lose calls or downloads while the backup generator kicks in.

The boost cable

A USB 5 V to DC 12 V step-up cable with a 2.1 × 5.5 mm barrel connector — sold for about 1 EUR including shipping.

USB 5V to 12V DC boost cable

USB 5 V to 12 V boost cable — the black housing contains an MT3068 converter PCB.

MT3068 boost converter PCB inside the cable housing

Inside the housing — MT3068-based boost converter.

This cable provides up to ~8 W output, which is enough for a standard broadband router. If your router draws more than 8 W, look for a higher-capacity boost cable.

Setup

Connect a 5 V DC adapter to the battery bank's charging port. The battery bank's USB output feeds the boost cable, which powers the router at 12 V.

Complete UPS setup — adapter, battery bank, boost cable, and router

Complete setup — 5 V adapter charges the battery bank, which powers the router through the boost cable.

Backup duration depends on the battery bank capacity. A smaller battery handles short outages (a few minutes while a generator starts); a larger one extends runtime for longer outages.