I've been using various versions of ZeroPhone for more than half a year now, from just carrying one with me to pretty much depending on having it with me. I've also been thinking about what's necessary to integrate it into my life as much as possible. I'm a hardware hacker that does software, and what I like about ZeroPhone is that I don't have to do a lot of software work to achieve my goals. Still, there are lots of goals and features that I have in mind, and many are not covered by existing software. So, once I write the most important pieces of software that I think ZeroPhone needs, I'll make a followup blog post - right now, I'll show what's possible almost out-of-the-box.

So far, my main usage of ZeroPhone is listening to music, this is the main reason I have my phone 24/7 in my pocket. It drives me, makes me more energetic and gives that boost I sometimes need, turning a boring trip around the town into a quick fun ride and helping me stay in the flow when I'm working. I have a 32GB microSD card, and I've made a 23GB partition on it specifically for music. It seems it's going to be full soon, though - df says that it already has 17GB of MP3s.

To actually play music, I use mocp from command-line - just point it to a directory, and it plays it (this is the feature that can be really hard to find in smartphone music players, with all their "databases" and "collections"). I have a small pyLCI app to go to next/previous song, and I even have the "next song" available on a hardware key, so whenever a song I don't feel like comes up, I can press a single button to skip it. The only problem with mocp is that I can't actually start it up from the UI after a reboot (you have to use the ncurses UI to make it play the first song). However, it's not a problem - my phone's typical Linux uptime is up to 10 days (assuming I connect the charger each night), it only resets when I forget to charge the battery, or do some hardware hacking that shorts 3.3V to GND =D

To sync music with my collection, I can use whatever tools Linux has for syncing files. In addition to that, I have a Python script that syncs music by reading file paths from a playlist, one more that downloads songs from YouTube if necessary, etc. The point is - I get no artificial limitations in software I use, I can write my own, and if I ever crave better features, like playlist tools or multiple backends, I can switch to something like Mopidy.

Now that I think of it, audio seems to be a promising medium for notifications, enabling certain workflows and improving the UI. Not only it's going to be necessary for accessibility functions (which have been mentioned as a priority in ZeroPhone survey responses multiple times), it can augment the visual UI even for those people that don't actually require accessibility features to use it - if done right.

ZeroPhone has a full-sized USB port, and can run Linux command-line software - so, it's not uncommon for me to use a ZeroPhone and esptool to flash a MicroPython firmware into a ESP8266, develop Python scripts for it in a cozy environment I get through SSH, and then upload the scripts to the ESP using something like ampy. The toolchain I get as a result is something I could never really get in Windows - it's stable, works quickly and is even automatable if necessary. I used to use a separate, Linux-powered, laptop just to do hardware work like this - now it's doable with the phone I always have in my pocket.



---------- more ----------

Incidentally, I can also charge a smartphone through this port - even though my tests have shown the current is limited to about 0.5A, then the voltage drops too low to be of use (the DC-DC is not that good). Nevertheless, it works as an emergency powerbank, for when my smartphone is at 2% but I really want to continue reading something interesting, or for when my portable hotspot is low on battery. My further plans with the USB port are to develop a backup app - it'd wait for a specific flashdrive in the USB port, then copy all the personal data from the ZeroPhone (or, alternatively, upload it to a home server once you're home), and could easily encrypt the backup.

I use the USB port more than I expected I would. It's great for general-purpose hardware hacker needs, such as formatting and partitioning flash drives (using the superior Linux tools available for that), reprogramming microcontrollers of all kinds, doing simple RTL-SDR stuff or maybe using a WiFi dongle in monitor mode, to analyze the spectrum, see how many clients are connected.

Last but not least, having a full-sized USB port is great when I have a USB device but I have no idea what it does - I've had that need quite a lot of times, researching or reverse-engineering things, or just getting familiar with something. I can plug it into the ZeroPhone, read the USB VID/PID right from the interface (there's an app for that) and then know . A good, though unlikely, thing is that if the device is a USB killer, I won't lose my laptop to it =D Not to mention the USB2IP potential, for example, which I plan to explore.

Talking about SSH, I SSH into the phone a lot, generally from my laptop, and do all things Linux.



I could write a lot about this - I do my programming, research and experiments here. Somehow, a VM just doesn't cut it for me (especially given that I do lots of hardware stuff), and even though I don't get a graphical display on this, I don't really need it. For example, one thing I now can easily do is getting access to files on a flash drive/MicroSD card with a ext2/3/4 filesystem. Earlier, I'd need a VM or a dedicated laptop, now I just plug the device into ZeroPhone, mount it and use scp to retrieve files.

Fun fact: 99% of ZeroPhone software work is done on a ZeroPhone! I, as many others, wish I could use it standalone, without SSH - and I think I have just the idea that I might showcase when the crowdfunding will be active. Nevertheless, it's fun to realise that I'm actually doing work by using a device which is, at that very moment, located in my pocket =D

Our hackerspace has a digital door access system. I recently added a SSH server (written in Python) to it, so that members wouldn't have to use RFID cards and could use SSH authentification to open the doors. I created SSH credentials for myself, too, and then I thought - why not create a small ZeroPhone app that'd let me in with one keypress? So I made it in half an hour's time. Here's how the app looks in the "Personal" menu, among other personal apps - press the button, it automatically creates an SSH session (using paramiko), enters my credentials, and the door unlocks.

Recently, I got stuck at home when our wireless router broke. I had an old router, flashed with some kind of OpenWRT fork, and I plugged it in - then I realised it was still configured to work with a USB-3G modem. I went to the admin panel, only to realise that I no longer remembered the admin password. Found recovery mode instructions, but it wouldn't go into recovery mode for some reason, so I had to connect through UART and reset the password - or leave myself and my family without Internet access, which'd make for a bunch of unhappy people in one room. I had a soldering iron, found some IDE cable wires, and the only female connector I could find was a 2x20 one. The result:

...And I got it to work! The wires are soldered to the UART pads of ZeroPhone, and UART is typically connected to the GSM modem on ZP, so I had to put the modem into RESET state (basically, flip one GPIO).

In a pinch, ZeroPhone works as a LiIon battery charger:



Talking about batteries - while 18650 are bulky, they're easy to source, are very safe and easily replaceable. You can even remove the batteries while ZeroPhone is connected to the charger, and plug fully charged ones, so that you don't have to wait for the phone to charge. What that means is - ZeroPhone replacement batteries are easily available, and they can even be hotswapped! No more "planned obsolescence" because of batteries just not holding a decent charge anymore, 18650 batteries have been with us for tens of years, and are only getting better (and more popular among general populace, because e-cigarettes).



That's it for now. I didn't even talk about expansion ports, and there are much more things that I do with my ZeroPhone, but I don't want to make this worklog too long, and I still need to spend time on making assembly instructions. After that, I'm going to go and see prices for 64GB cards - I want to carry more music with me, just found some albums I'd like to check out, and I don't want to constrain myself. I'm sure about one thing - the upgrade is going to be straightforward, and I might even be able to do it without turning my phone off for longer than a minute - because Linux!