Hacker News new | past | comments | ask | show | jobs | submit login
50 days of postmarketOS (ollieparanoid.github.io)
219 points by ollieparanoid on July 15, 2017 | hide | past | web | favorite | 55 comments

Even if half of the hardware features don't work, having a working, standards based linux image for old cell phones is super useful for prototyping random IoT devices.

An old cell phone is like a raspberry pi, if a pi had a built in touchscreen, camera, microphone, battery, wifi, and gps.

I've worked for an IoT company once where random old Android phones were sometimes called "best Raspberry Pi ever made".

I use old EeePC subnotebooks for that, which I get on eBay for about $40. Compute power, WiFi, wired Ethernet, USB, a keyboard, screen, trackpad, battery backup, and case. With a Raspberry Pi you usually have to add peripherals just to talk to the thing.

When I get one in I immediately install Xubuntu from a USB stick and do a total wipe.

(If you do this, get a real ASUS power supply. The cheapo ones with no brand and no UL certification overheat. Fires have been reported.)

There's quite a truth to that. I have used old smartphone as a dashcam with offline maps/navigation in one single package in the past.

And if it didn't have a convenient array of GPIO pins.

True, but lots of us don't care about that

Yeah, as many laptops at first I was very happy to be able to have a posix os running for "basic" (if emacs can be called basic) tasks.

Very very happy to know there's alpine for phones now.

I quit Windows a few years ago (I'm fine now thanks for asking!). It took me a couple of hours from what is this Linux thing to dual boot, and a few months from everything proprietary to everything open source. Freedom feels awesome.

I long for the day where I can have the same feeling on my phone.

Right now you can use LineageOS, or even CopperheadOS. PostmarketOS might be better in the distant future due to Linux vs Android userland.

I absolutely can recommend LineageOS (used to be CyanogenMod). I installed it for the first time about a week ago on my phone, and I couldn't be happier.

Rooting it is straightforward, and the first thing I did was to install a firewall, and AdAway (so I get system wide ad-blocking and tracker-blocking). It's an incredible feeling that for the first time in forever I'm more in charge of what my phone does.

The only caveat is that the support from LineageOS for less popular phones isn't great (unless you get lucky!) but if it does work on your phone, absolutely go for it.

Also, assuming your device has a good maintainer or maintainers, security patches arrive in days rather than the months-if-ever it can take manufacturers to release updated images and then carriers to roll them out.

Lineage and Copperhead are still AOSP, warts and all, under the covers.

An interesting ticket [1] is to try and boot devices using an upstream kernel. This would enhance the utility of older devices, given the community fork of Ubuntu [2] is abandoning devices stuck on a Jelly Bean kernel (v3.4) without serious back-porting.

[1]https://github.com/postmarketOS/pmbootstrap/issues/12 [2]https://ubports.com/blog/ubports-blog-1/post/ubports-communi...

Hm... It feels like pmOS would be an ideal host for running applications written in http://www.red-lang.org/

It has a very concise, cross-platform GUI DSL ("inherited" from Rebol) which requires a 1MB runtime only on top of the host OS' GUI system.

Look what can you build in ~7kB which can run on top of a 1MB runtime, not a 100MB browser...


A few years ago I've actually built an iPhone app launcher simulator in a few kilobytes which looked exactly the same on a PPC iBook, an x86 Mac Mini or a Windows PC...

If it works on Linux, why not? Everyone is encouraged to work on what they like best, and we will together, as a community, pick sane defaults from the best components we have. See also: https://github.com/postmarketOS/pmbootstrap/wiki/Milestones

Looks like a good fit on first look but I'm wondering about the architecture/compiler fit with the rest of pmOS. Especially with the ARM chips being so varied, a more popular language with wide arch support might be a better choice.

From that link:

> For Linux folks, sorry guys, the GUI support is not yet ready for prime time, though in the meantime, you could use Wine, Red GUI usually runs just fine on it.

I would love to see this be the Rockbox (www.rockbox.org) of smartphones. Best of luck! I'm excited to see this project progress.

Hope this becomes big, all the best. The beginnings are extremely promising. My biggest motivation behind seeing this succeed is that this is a free software alternative to Android.

Same here. I don't think we'll see an Android alternative so much as more BeagleBoard/Pi like devices. The ARM ecosystem has always bothered me. The reason we don't see more alternative OSes for mobile devices is the total lack of standards.

With the PC/x86 architecture, you had a pretty basic standard. Even if you had things like a PCI modem that didn't work or an unsupported Ethernet card, you could always at least get a Linux distribution to boot on any PC. There are x86 systems that aren't PCs (PS4, Wonderswan, etc.) and it was the PC/BIOS standard that really paved the way for Linux back in the 90s/2000s.

I wish Windows would unlock their bootloaders. ARM+UEFI seems like the perfect platform for easily creating alternative OSes. Microsoft barely has a mobile market. They should really open their devices to the community.

What about Ubuntu phone?

Check out the https://ubports.com/ project, they have continued Ubuntu Phone (which has officially been discontinued), and they have made really impressive progress since then. You can really run it on a phone and have all drivers working, unlike postmarketOS (but we have different goals, remember).

One of our goals is packaging all sorts of user interfaces, and ubports is one of them (but it depends on individual developers, if they actually want to do it, because developers are encouraged to work on what they like most): https://github.com/postmarketOS/pmbootstrap/issues/62

Amazing! Got an old HTC Desire with a cracked screen lying around. I know what I'm doing tonight.

As for the Alpine Linux it's based on, that stuff is seriously nifty in its own right. Any old decrepit box is a decent server with Alpine on it.

Perfect! Drebrez already made decent progress with the HTC desire: https://github.com/postmarketOS/pmbootstrap/wiki/HTC-Bravo-%... Make sure to talk to him in the IRC/matrix channel, so you can join the efforts :)

Isn't this also what OpenWRT/ddWRT have accomplished? I wouldn't be surprised at all if there was a huge amount of synergy between those groups and pmOS since there has been so much work done on wifi and core machine management for the various router hardware that's around.

All embedded Linux projects have a certain amount of crossover, though I suspect a large amount of the work carried out by the OpenWRT and ddWRT teams was on MIPS-based hardware rather than ARM.

Also they focused on, well, WRTs. No graphics stack there :)

Ollie, why pmOS and not Meego or Sailfish? What do you want to accomplish by starting from scratch?

Sailfish isn't open enough for me, they have closed source UI components and I couldn't even find the build recipes for the packages they provide when I tried.

They do not support full disk encryption, although it has been asked for by the community for ages.

Also Sailfish tries to abstract components from Android with libhybris. I wanted to have a real Linux distribution, which does not need some sort of Android compatibility layer to actually work, or else it would just run behind Android and the phone industry (as I've worded it in the introduction post of pmOS).

MeeGo has its last release from 2012 (according to Wikipedia), so one would need to update everything first, deal with the legacy stuff that it brings and fully maintain it from there. By using an alive desktop/server Linux distribution all the regular distro maintenance does not need to be done, it just needs to be bent to run on phones.

Finally there is the pmbootstrap component. I've started scripting everything before I developed it and realized, that I need a real program that abstracts all the bootstrapping and cross-compiling. The result is, that you can install it on any Linux distribution, that runs Python 3.4 and OpenSSL, and it sets up all the crosss-compilers and else everything you need in chroots. I haven't seen any other of the existing projects doing something like that.

(We also have the deviceinfo files, and the one-package-per-device thing, which I haven't seen anywhere else.)

I'm not Ollie but I'd say the main strengths of pmOS is that it's lightweight (Alpine is a small Linux distro) and that it seems to aim to be structurally simple (only one package changing per device supported). There's probably some additional strengths in having pmOS as a community-led project, with no need to navigate the bureaucracy surrounding earlier attempts.

Would be interesting to know what can be shared from those projects. For instance Jolla are just preparing to release Sailfish on the Xperia X, I wonder how much assistance that will provide to this project as well. Sony have an Xperia Open Devices programme which at least puts some effort into running on a mainline kernel.

We have used the usb network configuration code from SailfishOS' hybris-boot as reference to implement our own version for the initramfs already.

What these projects can share is mainlining kernels at least, and there could be more. We have heavily documented what we do and I hope that this will prove to be useful to other projects as well.

Meego or Sailfish are niche systems compared to Alpine and it's my understanding they don't graphical applications from desktop Linux systems, though I'd take any GNU over Android.

The problem is phones require a different UX than desktops. That’s the reason why Apple has two similar but different frameworks between iOS and macOS, and windows 10 attempts at cross-device (touch or mouse, your choice!) have largely failed. A menu bar, for example, won’t work well at all on a phone but is ubiquitous for X-based apps.

I'm honestly not convinced of this. I know it's gone terribly so far, but it's not clear to me that that's an interface issue and not an ecosystem problem with the phones in question. A menu bar, for instance, would certainly be unwieldy, but themed with large text it's no different than toolbars which certainly are found on mobile. It would frequently be clunky, but even limited support for the universe of existing software would in my opinion have a massive effect on the usability of any new platform.

Nice! Now we just need approval for use over cell towers.

This is really exciting!

If there is a way for a laymen to help please provide some guidance, I'm comfortable tinkering around with Linux and breaking and fixing things but this looks a bit over my head.

Keep up the great work!

Why do you think you need approval? You've got a modem that speaks GSM/3G/LTE and the towers speak the same - no approval necessary.

Am I able to register a phone number and have others call it from other carriers?

I would love to use a phone in that manner. in the same way I built my own desktop to connect to the internet.

Actually, to port a device all you need is some Linux knowledge. Check out the guide: https://github.com/postmarketOS/pmbootstrap/wiki/Porting-to-...

I guess you also need a device that is already supported by LineageOS, right? I have a damaged Huawei Ascend P7 Mini that I would love to try postmarketOS on, but having to port LineageOS first makes it seem like more of a long-term effort than a weekend hack.

No, all you need is the source code to a kernel that works on the phone. This could be from LineageOS, AOSP, TWRP, CyanogenMOD (if they didn't transfer it to LineageOS yet), or any other random repository on github with "kernel" and your device's codename in the repositories name. There are lots of those actually.

Even if you can spend "only" one weekend on it, it would hep porting to your phone immensely. As we document our progress in a device specific page, someone else can pick it up from there and advance your port!


Get started here: https://github.com/postmarketOS/pmbootstrap/wiki/Porting-to-...

Google had to embrace OEM bloatware to get Android into the market and has been, so far without success, trying to stuff the evil OEM product management "we have to be distinctive" genie back into the bottle ever since.

Google is going to have to save Android Things from the same fate or we'll have billions of unpatched IoT devices.

Without diagnosing Android One, Nexus, Android Silver, etc. and why they all failed - not to mention Cyanogen - why do two guys with a Linux distro think they will succeed?

Who said, that we are "two guys"? I've started with this alone, before I considered pmbootstrap good enough. Since I've released it, we have 40-60 people hanging out in the irc/matrix channel, and a good bunch of them are actually contributing to either this project or other projects with which we share efforts.

The big difference compared with Android and everything based on Android/AOSP is, that we keep the effort for each device minimal. Read the introduction post for more information: https://ollieparanoid.github.io/post/postmarketOS/

This is pretty amazing work. I'm very excited for the future here.

I do wonder if using linux will make battery management hard

Luckily the battery drivers are all included in the Android kernels so far (which we use right now). Besides that, it will work like with Linux on your Laptop - carefully craft energy efficient programs together and you will get a nice battery lifetime :)

Nice! Waiting for OnePlus One support.

If you have some time to spare and your oneplus one is not your day-to-day phone, you could give porting pmOS to it a try: https://github.com/postmarketOS/pmbootstrap/wiki/Porting-to-...

All you need is some Linux knowledge, and we will help you with the process in the irc/matrix channel.

Even if you can't get very far, it helps the next guy who picks up your work and starts from there. That's why we document our progress on a device-specific wiki page:


I want this to be a big thing.

If you have some time to spare, the best way to get there is through contributions, we all do this in our free time after all. With some decent Linux knowledge and help from the community, you should be able to get a port done in most cases, check out the porting guide in the wiki: https://postmarketos.org/wiki

I'm considering it.

Making calls and other basic phone features do not work yet.

Um. That could be a problem.

In its current state, this project does not target end users, but fellow developers who find this interesting and want to join in. So if you count these blog posts as releases, it follows the release early, release often principle to get interested developers to know the project and accelerate with joined forces.

The calls app is probably not even in the top five apps used everyday by a large swath of the mobile population.

My guess is that FB, Mail, Whatsapp, Twitter/insta/Snap, and news apps make up the top 5.

To start off with I think a browser and email client would be the most important.

Just get a browser and some form of networking to run and you've got a pretty usable OS for a lot of people.

This is me right now on my iPhone. Apart from an ssh app, a openvpn app, and my bank's app (which could probably be handled on the browser using KeyChain), I use the browser for everything. It's glorious.

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact