Table of Contents
Think about a book that sits amongst other books in your library or on your book shelf, but it's collection is as big as your library. What if it can have books materials that your library can't have and can virtually go anywhere. That was the idea behind the Unlimited Book @ Fahrenheit 451.
Reminiscent of the warmth of a hard bound book and the scent of its pages, The Unlimited Book expands the ecosystem of a library as the keeper of infinite knowledge. Taking the form of a secret book safe which consists of a custom server that runs on battery it serves readings that are stored locally on the server without the use of the internet. This edition of Unlimited Book puts together articles, papers and stories from those that make up the UnBox 2019 programme. Users can connect to the server called Fahrenheit 451, available without password and download as many readings as they want. Thats all they can do. No registration. Open to All. - UnboxFestival/2019
Initial idea was to build it using a raspberry pi zero. Run a software AP along with an external wifi dongle. Setup up a Open Network. Run a custom server serving the content on http port. Users can connect to the port and use the content as they wish.
The hardware setup worked as expected. But there were couple of issues. Raspberry PiZero is not exactly $5 in India, not all wifi dongles support software AP. The new Pi Zero W with built in wifi is not cheap either. And people have to buy things to set this up. How about if we can re-purpose hardware? That's when its struct to me that we can use old android phones.
Most android phones are struck at older version of software, every friend of mine has more than one old phone that they don't want to sell as they are offered very low price. I myself have at least 2 phones. This solves the all three major problems. Don't buy Recycle, No need of external battery unless you want a lot of power, Software AP is built in. So the next step was how to run my own web server and serve it to people.
There are to parts to the software setup. One setup the system and second part involves the custom webapp. The idea was not to root the phone but run it just by installing apps. This makes it easy for anyone to run without the hassle of rooting the phone.
Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
So I started with the Termux and then installed the pip using the package management. It doesn't come with python. Since our custom server is running on Python, let's install Python. Installing Python also installs pip. If you are curious. It install Python 3.7.2 as of now.
#list all the packages pkg list-all #install a python pkg install python #install pkg install pip
Enable SD Card Permission
For ease of running and maintenance we want to run our custom app from SD Card. Termux by default doesn't have access to SD Card. So go to your Settings→ Apps→ Termux→ Permissions and enable. Now reopen the Termux. go to /sdcard and create a new directory called unlimited_book. You should be able to create one with out any issues. The cd to that new directory and print the current directory just to check.
cd /sdcard mkdir unlimited_book cd unlimited_book pwd
Get Software and run
There exists a large set software for this purpose. But I wanted something very simple. Couple of 100 lines of code and runs out of sqlite DB. I couldn't find one and hence I wrote one. Its open source and available for free.
At this point you can get the web software from Github. If you know git then you can install it and clone it. Else download as zip file, extract it inside our unlimited_book folder. It will extract into a folder - unlimited_book-master. Now you need install the dependencies using the pip. Once you do that, you can start the server
cd unlimited_book-master pip install -r requirements #start the server sh server.py
Now that our software is running on the machine and enable Soft AP by enabling tethering, name the network as Fahrenheit451, Security None and Disable as Never. This will expose a network called Fahrenheit451 to which anyone can join without entering the password. Once they join the network they can go to http://192.168.43.1:4242 to access the Unlimited Book. Android uses 192.168.43.1 as their DHCP address. You can verify that in the android code if you like. At this point there are limitations to how many can connect at once to the device. I don't know the exact limitations. We will figure out.
Container is a book. I choose a book that's think, cheap and hardbound. Took a weekend to carve enough space to accommodate the phone and extra battery pack. It worked out really well.