Project ZeroPhone: the ambitious DIY Raspberry Pi phone


The growth of open hardware is undeniable and we’ve had high-profile smartphone projects appearing such as Purism’s security- and privacy-focused Librem 5 smartphone.

The ZeroPhone project led by Arsenijs Picugins is no less ambitious but much less expensive. As we started this interview we noted, with some irony, his apologies for the intermittent mobile connection as he’s taking a break away from his home city of Riga to enjoy the countryside of neighbouring Lithuania.

While you’ll be able to make calls and send SMS with Picugin’s ZeroPhone, it isn’t as cutting edge as Purism’s smartphone. Instead, it sits firmly in the middle of the makery and hacking spirit that powers the big budget open hardware projects.

The phone’s design is pragmatic, with its use of the raspberry Pi Zero, surface-mounted switches and 1.3-inch, 128 x 64 monochrome OLED screen, but it’s a clever approach to a DIY Pi phone and Picugins, a 22-year-old student from Latvia, is hoping other enthusiasts will snap it up as a kit when he launches a crowdfund to cover manufacturing costs.

In its current form, the ZeroPhone is a Raspberry Pi Zero in a ‘PCB sandwich’ that has Wi-Fi (using an eSP8266), HDMI and audio outputs, a free full-sized USB host port and a micro-USB port for charging. One feature that has caught the attention of hardware hackers is the use of GPIO expansion headers for hardware add-ons and customisation – Picugins is still working on a 3G modem (more on that later). On the coding side, it uses Python and has a UI toolkit designed to make app development quick and easy.

Question: The big question is can you assemble a phone from easily available parts, using cheap boards running Linux?

Arsenijs Picugins: Well, I’m making sure it’s the case. Right now there are two people who are trying to assemble the phone independently. It’s a slow project and I don’t yet have all the assembly instructions published and polished, which is one of the things that I’m trying to finish for the Hackaday Prize deadline that’s in 20 days. But it’s one of the selling points from the beginning, as it’s possible. You can get components that make up a phone together, unite those components together and just assemble the whole thing and put some solder on it. This is pretty much what manufacturers do […]. Of course, they assemble the phones by using a lot of automation.

Project ZeroPhone: the ambitious DIY Raspberry Pi phone

Arsenijs Picugins is 22-years-old and the creator of ZeroPhone. He’s taken time out from his university studies to concentrate on projects like the phone and helps manage the Make Riga Hackerspace

Q: Do you have to be reasonably competent at soldering to do this?

AP: Yes, I don’t think assembling this phone is suitable as a first-time project in soldering. I think it’s a second- or third-time project. Also, a large part of soldering can be automated [Picugins has access to a Pick&Place machine in the Riga hackerspace]. So I can provide kits with the hard-to-solder parts already assembled. Even then, without hard-to-solder parts already on, people still can assemble it themselves – I can just have to simplify the process.

For example, there’s a Github where all the schematics and board files are available. One example of hard-to-solder parts that are easy to automate are buttons – you don’t have to sell just the keypad and buttons separately. I can just solder them on and sell it to people like that in the form of kits. The parts that are either hard or expensive to automate, this is something that would be economical and reasonable to let the recipient do, because otherwise I’m afraid it will drive the price point too high.

Q: So you’re keen to keep it around $50 (around £37) for all the components?

AP: For all the bits, yes. But this is how much the bits cost, bill of materials. Right now it’s around $40 (around £30) and I might add $5 of components, but then if I’m selling kits myself and have to package them, test them and ship them, then the kits aren’t going to cost $50. But I want to stay below at least the $100 (around £75) mark, because it’s a psychological limit above which it’s harder to justify spending money on something.

Q: For the phone itself, what’s the situation with software? What OS are you using?

AP: So there’s an operating system which is Raspbian Linux. But Linux itself works great, because it’s on a Raspberry Pi. Among all things Raspberry Pi is famous for is software support. It’s really great, even though there are closed source bits, which are sometimes problematic. I think it’s one of the best for support right now, when speaking about single-board computers. They have the resources and take user feedback into account.

Q: So it’ll be running a cut-down version of the Raspbian distribution?

AP: It’s without the desktop environment. There’s a Raspbian Lite distribution and that’s what I’m using and it makes sense to run something without a desktop (by default) on a small phone like this. Speaking about the UI, right now it’s Python powered. There are no X server drivers, or something like Gnome native Linux support for it, so it’s a tad problematic, but there still isn’t a good UI framework for Linux phones with small screens. There are all types of Android frameworks, but I don’t know of any UI framework that I could use even if the screen had a frame buffer, so there just isn’t such a thing except for what I’ve developed.

So I had the option of using something of my own or using some kind of library for the screen and writing all the applications myself and not use all the terminal utilities that are available or I could spend a lot of time to make some kind of frame buffer bindings and then put up with the illegibility of the console because it doesn’t have enough characters – it can only have the standard 24 to 8 characters on screen, when standard is 80 x 24 and some apps require that. So I had to roll something of my own. [This interface was based on of one of Picugins’s earlier hackaday projects called pyLCI – see here.]

Q: Do you think down the line, you might go for a higher-resolution screen?

AP: Like touchscreen? Looking at the situation with screens that you could connect to the Raspberry Pi, the thing is this is one of most reasonable solutions as the interfaces that Raspberry Pi provides do not give that much leeway to work with. For example, there is an SPI interface, but the refresh rate is not going to be good and there’s not going to be hardware acceleration. There’s HDMI, but screens that use HDMI usually consume plenty of power. That would also complicate the hardware design, because HDMI lines require a lot of attention because of the requirements of the PCB layout.

There’s also DSI interface: it’s the interface to go [with] if you want to make a portable device with a large screen, but it’s neither accessible on the Pi Zero which I’m using, [nor] is it documented. They’ve not documented that interface and do not provide an API to connect your own screens. I have one interface that I can reasonably use for a mobile and that’s SPI, but the refresh rate is not that good for large screens. You can have SPI screens that are well built, but you’re basically limited to Adafruit or Sparkfun or some Waveshare product, but I didn’t want to specifically limit it to that selection as it’s not that accessible to me. They really don’t have much interest here.

Q: You’re saying distribution is limited?

AP: Yes, exactly. Also, this small screen is an interesting limitation. It’s an interesting mental exercise thinking about how to fit everything into such a small screen; make the interface usable and use physical buttons to a large extent […]. It works and it’s still cheap and it’s also a simple way.

Project ZeroPhone: the ambitious DIY Raspberry Pi phone

With access to a Pick&Place machine at his local hackerspace, Picugins will be able to automatically pre-solder some parts of the kit

Q: In one of your posts somebody was looking at coming up with a different way to work with the UI? You’ve got people wanting to help collaborate?

AP: Yes, absolutely, people helped. There was a small road block from my side because I couldn’t send out hardware to contributors for quite some time, due to hardware problems I was solving. But now I’m sending out hardware that people can work with. For example, I’ve sent hardware to one guy who is interested in making Wayland run and he’s done some software demos of this small screen, e.g., this 128 x 64 pixels viewport working with openGL.

Q: That’s exciting – how is the chassis design going?

AP: I’ve sent out hardware to case designer volunteers. I’d really like to outsource. I’m mostly feeling overwhelmed because there’s so much to do, so people have been really interested in making a case [for the phone]. So I’ve sent out three phones and I’m going to send out three more. I’ll continue sending them out to those people that want to help. I don’t really have that much experience in 3D modelling. That’s why there’s not a case yet, as I can’t make it myself. I’d need to spend even more time learning how to do it myself.

Q: How is the crowdfunding project progressing?

AP: It’s not quite ready yet. I have the most important part, the financials, to be prepared. And there’s also the fact I want to make a stable hardware revision, which will be the next revision, so that I can account for the bill of materials changes that might be necessary, and make sure they don’t impact the manufacturing in any significant way. That’s been a blocker for the last five months. It’s been getting ridiculous even for me, but I want to make sure everything is going to be okay as even though I have people who can give me advice, I really want to make this project succeed and not stumble upon something unforeseen.

So I’m making sure that the crowdfunder is as good as possible. I know for example that this revision needs some more self-assembly instructions and I need to get more feedback and check the financials so there’s no chance of me running out of budget during the manufacturing. So, yes, it’s mostly about me being nervous.

There are two people that I know of that are already trying to assemble the current revision, but there are also six people that want to assemble the next revision. I’ve already bought parts for them, now I’m working on the PCB design. So, self-assembly is a real priority. After all, it’s something nobody really offers, but it’s completely possible to achieve.

Project ZeroPhone: the ambitious DIY Raspberry Pi phone

Q: Have you managed to get the ZeroPhone to support 3G?

AP: It basically needs the 2G modem replaced with the 3G and it’s possible, but I’m constrained by the dimensions of the 2G modem that I’m using, so I’m trying to design around those dimensions.

Two weeks ago, when I was finishing the 3G upgrade board, I ran into limitations, so I’m thinking about a way around them by either increasing the vertical dimensions of the phone or basically having a part that sticks out a little. I’m waiting for a solution to come to me while I have PCBs to make for the next revision. But it’s definitely one of the priorities for the crowdfunding.

There’s a survey for those who want to get a ZeroPhone or are interested in the project, so I’ve been collecting replies and I think 3G is the most requested feature. So I have to have 3G to offer for the crowdfunder or it will be a serious disadvantage.

Q: You also have add-ons for the ZeroPhone. Can you tell us about those?

AP: I’m using some of the interfaces that the Raspberry Pi provides, but there are a lot of interfaces that are free as well. I’ve connected those interfaces to expansion ports on the sides of the ZeroPhone and I thought why not have some boards that would simplify tasks like programming and working with flash chips? Then I understood, for example, I could design a board that has a circuit for a laptop BIOS chip and use ZeroPhone to reprogram the BIOS off a laptop in order to, for example, deactivate Intel Management Engine (which truly worrying vulnerabilities were recently discovered in) or something like that.

I can desolder the BIOS chip from my laptop; I can plug it into a ZeroPhone add-on board and use available BIOS chip programming tools in order to read the BIOS contents, modify them using, for example, Me Cleaner, a utility from Purism. I can modify the BIOS image and flash it back into the laptop and I’m going to have a management-disabled laptop.

This has been one of my side projects and I’ve come to understand that ZeroPhone is also quite a powerful hardware hacking platform and those expansion ports will make it even better at it, and it’s something I can do to make hardware hacking more user-friendly.

Q: What do you think of Purism’s Librem phone?

AP: I find it extraordinarily important, and I believe this project, if successful, is going to be a breaking point in history of open source phones. How I see it is that we’re voting for our ideals with our money, and if we succeed, it’s going to make other companies listen to us and understand what we care about – even if a tiny bit.

Furthermore, ZeroPhone, postmarketOS and Purism Librem are going to have a big overlap in software, reducing effort duplication and therefore increasing quality – and I’m sure there has been sufficient evidence that software quality can make or break any open source project. I believe we can make a lot of changes in this field.

Purism is making really modern hardware and they do need a lot of money to accomplish that. PostmarketOS is taking old phones and giving them a new life with Linux, and I’m taking these accessible single-board computers and making them into phones and hardware hacking kits.

To learn more about the ZeroPhone project and possibly get involved, head to the main project page and its Github repository.

(This interview was first published in issue 184 of Linux User & Developer).



Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>