I wanted a stand-alone wordprocessor, similar to this one, meaning a device that can only be used to type text, and absolutely nothing else (no notifications, no browser, no distractions) and had an old Raspberry Pi Model B and GrovePI kit, both taking dust for over a decade.
Below is a description of the steps taken to make this project happen.
- A Raspberry Pi. Tested on the 2012 model B, so should work on any regular Raspberry Pi (meaning Pico and Zero models excluded).
- A Grove Pi kit. Especially the board and the LCD. It looks like it's discontinued but maybe it can be found on eBay. An alternative could be Adafruit but I don't have one.
- A keyboard.
- Attach the GrovePi board on the Raspberry Pi and the LCD screen in port I2C-2 on the board
- Install buster on the Raspberry. Not bullseye or later.
- Run
sudo raspi-config
to set the pi user to Console AutoLogin using (under System Options, Boot / Auto login) - Install GrovePi. The below incantation (that bypasses the UI components) is recommended:
curl -kL dexterindustries.com/update_grovepi | bash -s -- --bypass-gui-installation --system-wide
- Run
sudo raspi-config
to:- setup Wifi, since the idea is to have something portable. Note the Raspberry Pi Model B doesn't have Wifi natively. Need a USB adapter.
- enable and test ssh since we'll be messing up with tty1.
- Since the goal is to have the Raspberry Pi headless but also produce some files, you want these to be either accessible or be copied to another machine.
For example, install samba server to have the files accessible from Windows machines or samba client to have the files copied to Windows machines. I went with
sudo apt-get install smbclient
. - Setup a Bluetooth keyboard, since the idea is to have something portable.
- Get a BT USB adapter (if Raspberry Pi older than model 2)
sudo bluetoothctl
, then scan on, pair, etc.- You may need to trust the keyboard after to make sure it auto-connects.
sudo bluetoothctl trust <mac-address>
- Set up auto-updates if you want a low-maintenance device:
sudo apt install unattended-upgrades
- Update the firmware of the GrovePi board:
cd ~/Dexter/GrovePi/Firmware && sudo bash firmware_update.sh
- Download this repo locally, e.g.
git clone https://github.com/vdbg/grovepi-wordprocessor.git
and cd inside the directory - Run
pip3 install -r requirements.txt
- Copy
template.config.toml
toconfig.toml
- Edit
config.toml
accordingly, in particular configure where the processor should save files If saving to a file share, configure it in/etc/fstab
to automount, for example//file/share /mnt/share cifs username=user,password=passwd,auto,user,dir_mode=0777,file_mode=0666,nounix 0 0
- Test the script; change paths accordingly if needed:
/usr/bin/python3 $HOME/grovepi-wordprocessor/word.py
- Edit the
~/.profile
file and add the following lines at the end (with path fixed if appropriate):
if [[ "$(tty)" == "/dev/tty1" ]]
then
/usr/bin/python3 $HOME/grovepi-wordprocessor/word.py ; exit
fi
- If logged on the console (physical monitor), press 'Ctrl-D'. This should automatically start the word processor. Now that the default tty1 console is "taken" by the word processor, you have to use CTRL+ALT+Function_Key (F1-F7) to use the other consoles.
- If logged through ssh instead, then
ps auwx | grep bash
and kill the bash process on tty1. The wordprocessor should automatically start. - Now, whenever the keyboard physically attached to the pi is used (possibly through bluetooth), the LCD screen should show what's typed.