Smartphones boggle my mind a whole lot – they’re pocket computers, with heaps of power to spare, and yet they feel like the furthest from it. As far as personal computers go, smartphones are surprisingly user-hostile.
In the last year’s time, even my YouTube recommendations are full of people, mostly millennials, talking about technology these days being uninspiring. In many of those videos, people will talk about phones and the ecosystems that they create, and even if they mostly talk about the symptoms rather than root causes, the overall mood is pretty clear – tech got bland, even the kinds of pocket tech you’d consider marvellous in abstract. It goes deeper than cell phones all looking alike, though. They all behave alike, to our detriment.
A thought-provoking exercise is to try to compare smartphone development timelines to those of home PCs, and see just in which ways the timelines diverged, which forces acted upon which aspect of the tech at what points, and how that impacted the alienation people feel when interacting with either of these devices long-term. You’ll see some major trends – lack of standardization through proprietary technology calling the shots, stifling of innovation both knowingly and unknowingly, and finance-first development as opposed to long-term investments.
Let’s start with a fun aspect, and that is hackability. It’s not perceived to be a significant driver of change, but I do believe it to be severely decreasing chances of regular people tinkering with their phones to any amount of success. In other words, if you can’t hack it in small ways, you can’t really make it yours.
Can’t Tinker, Don’t Own
In order to tinker with your personal computer, you need just that, the computer itself. Generally, you need a whole another computer to hack on your smartphone; sometimes you even need a custom cable, and it’s not rare you can’t do it at all. Phone tinkering is a path you explicitly set out to do, whereas computer-based hacking is something you can do idly.

There’s good reasons for this, of course – first, a phone was generally always a “subservient” device not meant or able to be used as a development bench unto itself. Then – phones started really growing in an age and an environment where proprietary technology reigned supreme, with NDAs and utter secrecy (particularly for GSM modems with their inordinate amount of IP) being an especially prominent fixture in the industries surrounding phones. Even Android’s open-source technology was mostly for manufacturers’ benefit rather than a design advantage for users, as demonstrated by the ever-worsening non-open-source driver situation.
Only a few phones ever bucked these trends, and those that did, developed pretty devoted followings if the hardware was worthwhile. Just look at the Nokia N900 with its hardware capability and alt OS support combo, Pixel phones with their mainline kernel support letting alternative OSes flourish, or old keypad Motorolas with leaked baseband+OS source code. They’re remembered pretty fondly, and it’s because they facilitated hacking, on-device or even off-device.
Hacking starts by probing at a device’s inner workings, deducing how things work, and testing the boundaries, but it doesn’t happen when boundaries are well-protected and hidden away from your eyes. A typical app, even on Android, is surprisingly non-explorable, and unlike with PCs, again, if you want to explore it, you need a whole another device. Does it benefit app developers? For sure. I also have a strong hunch it doesn’t benefit users that we could otherwise see become developers.
Part of it is the need to provide a polished user experience, a respectable standard to have, especially so for producing pocket computers to be used by millions of people at once. However, I’d argue that modern phones are suffocating, and that the lack of transparency is more akin to encasing an already reliable device in epoxy for no reason. A device designed to never ever challenge you, is a device that can’t help you grow, and it’s not really a device you can grow attached to, either.
Of course, complaints are one thing, and actionable suggestions is another.
What Do?
If I were asked how to fix this, I wouldn’t limit myself to opening filesystems back up to a user’s exploration habits, beyond the way they were open even in early Android days. I think modern phones could use a pre-installed Python interpreter, with a healthy amount of graphics libraries, a decent amount of control over the system, snappy well-configured autocomplete, and a library of example scripts you could edit in place; essentially, an Arduino IDE-like environment.
In other words, let people easily program phones to flash the screen every time an SMS from a specific person is received, or start audio recording when the user taps the touchscreen three times as the phone’s locked, or send accelerometer movements into a network socket as fast as the OS can receive them. Then, let them wrap those programs into apps, share apps easily with each other, and, since the trend of fast obsolescence requires regular collectie infusions of cash, transfer them from phone to phone quickly.
By the way, if days of Bluetooth and IrDA transfers evaded you, you missed out. We used to stand next to each other and transfer things from one phone to another, a field previously handled, but nowadays these things are somehow relegated to proprietary technologies like Airdrop. This isn’t a problem for personal computers, in fact, they somehow keep getting better and better at it; just recently, I transferred some movies between two laptops using a Thunderbolt cable during a flight, and somehow, this was one of the few “wow” moments that I’ve had recently with consumer-grade tech.
The idea is pretty simple on its own – if phones are to be personal computers, they should be very easy to program.
The Doohickey Port
What about a bonus suggestion, for hardware customization? USB-C ports are really cool and powerful, but they’re relatively bespoke, and you only ever get one, to be unplugged every time you need to charge or sync. Plus, even if you have OTG, all that 5V step-up action isn’t great for the battery, and neither are USB hardware/firmware stacks.
I like I2C. Do you like I2C? I know most of you do. I enjoy I2C a lot, and I like how it’s decently well standardized, to the point things tend to just work. It’s not as great at as many things as USB can be, but it’s also comparably low-frills, you don’t need a software stack or a hefty bespoke board. For the most part, with I2C, you can just send bytes back and forth. It’s a low-bandwidth yet high-impact bus, with a healthy amount of devices you can attach to it. Also, CPUs tend to have plenty of I2C ports to go around, often leaving a good few to spare.
What else? Keeping up with the times, these days, you can manufacture flex PCBs decently quickly, with stiffener at no extra cost, and for dirt cheap, too. On a physical level, phones tend to come with cases, overwhelmingly so. In a way, there’s suddenly plenty of free space on the back of a phone, for those with the eyes to see, and that’s after accounting for the ever-increasing camera bump, too.
My bonus idea to make phones more customizable at low entry level, would be an I2C accessory port. In effect, a latch-less FFC socket with exposed I2C, and some 3.3V at non-negligible power. Of course, protect all lines electrically, current-limit the 3.3V and make its power switchable. With modern tech, you don’t need to compromise waterproofing, either, and you can add a whole bunch of protection to such a port.
From there, you can get GPIOs, you can get PWM, and so much more. You could have a reasonably simple GPIO expansion, but also a fully-fledged board with DACs and ADCs bolted on, or a servo control board, or an extra display of the kind phone designers like to add once in a generation, only to find it never be used by third-party apps as sales numbers never really reach the point of wider adoption. Experimental chording keyboards, touch surfaces, thermal pixel sensors,
Does it feel like you’ve seen that implemented? Of course, this resembles the PinePhone addon scheme, with FPCs wedged between the back cover and a set of pogo pins. Notably though, this kind of standard is about having compatibility between models and even manufacturers. You also shed a lot of Bluetooth cruft generally required when developing accessories for modern phones. It requires a flex PCB, sure, but so do pogopin schemes, and there’s barely any mechanics compared to a pogopin array. Is it more fragile than a pogopin array? Yes, but it’s fragile addon-side, not as much phone-side, whereas pogopin arrays tend to be the opposite.
A Sketch And A Dream
Of course, this also relies on the aforementioned Python interpreter, and a decent exposed I2C API. If the only way to tinker with yours and others’ accessories is through bespoke intransparent apps you need a whole different device to make (or modify, if you’re lucky), the hackability aspect wanes quick. In essence, what I’m proposing is a phone-contained sandbox, not in a security sense, but in an educational sense. Personal computers have been serving as sandboxes for decades now, and yet, phones could never really fulfill such a niche.
I think one of the big problems with modern phones is that a phone is barely ever a sandbox, all for mostly historic reasons. Now, if that’s the case, we should make it one. If it’s a sandbox, then it can be molded to your needs through hacking and tinkering. If it can be molded to your needs, then it belongs to you in a whole different way. Will this happen? Quite unlikely, though, I do feel like making some prototypes. Instead, it’s about highlighting a significant aspect that contributes to tech alienation, and imagining how we could solve it given enough market buy-in.
“…the lack of transparency is more akin to encasing an already reliable device in epoxy for no reason.”
Please don’t give them any ideas.
“What Do” indeed…
You’re confusing user hostile with hacker/tinkerer/nerd friendly. The olden days of personal computing felt pretty hostile to the 99% of normies.
Would I love to hack on my iPhone? Sure! But then I think of the can of worms this would open for my less technophile relatives. If I need something more hackable, I can use a Raspberry Pi, discarded and rooted Android device, or buy one of the few phone-ish devices targeted at our market.
Though I do think there’s an argument to be made about user/customer hostility of modern capitalism in general as preached by Cory Doctorow.
Like, inkjet printers are a good example of user hostile devices. Here, many manufacturers actively sabotage what regular users want to do.
You can have both worlds combined: grant the “hackers” access to the device by breaking some kind of fuse, be it software and/or hardware and make sure: everything you break beyond this line is your fault.
The normal user wouldn’t care (especially opening the device and e.g. remove a zero ohm) and the hacker can do whatever he wants to do.
Prusa did this with one of their printer mainboards. I know the complexity/liability is something different between companies and products, but still…
They just don’t want to learn. Especially not it there is someone they can use as unpaid helper. I don’t think normalizing being lazy should be allowed. When I wanted something, I learned. Is changing your own tires in the scope? Yes. Get a cheap safe hydraulic lift, a torque wrench and check the handbook on the required torque for your car and type of rims.
I don’t know what the average Joe does in that meantime. I feel that time spent on spectator sports is wasted. Maybe I am not normal, but I will never accept that being lazy can be accepted as normalcy either. Especially not when asking friends for help is expected to cost them $0.00, and they could just invite you to a BBQ (which my real friends do).
“time spent on spectator sports is wasted”
I’m with you on that. However, it should be noted that my agreement in no way, shape, form, or measure of any sort indicates that you are normal.
I think the point is to remove the consumer/producer divide. Universal PCs gave us the exponential growth, not purchasing specialized programmer computers.
Doesn’t the pine phone have an exposed i2c bus in its back panel interface?
oh man…i do have tons of complaints about modern smartphones. but this article, man! i disagree in every single detail.
“idly hacking” vs “tinkering is a path” is a distinction without a difference. pure nostalgia without content.
using a separate machine to hack a phone is no big deal. i always used a separate machine to hack on portable computers, which i’ve eagerly done for as long as i’ve been able to afford them. my laptop is ‘a super computer’ by my standards and even so i build its custom kernel on a big pc.
i never had the nokia n900, i just had an n810…and good riddance. what an absolute piece of garbage ‘maemo’ was. worst of all worlds. i recently took it out again to see if i could use it as a wifi-to-3.5mm audio gateway, and it was even worse than i remembered. to access its audio hardware you had to use a proprietary closed hacked version of esd, which was extremely buggy. as maemo evolved into whatever it is today, it constantly dropped one poorly-thought-out solution for another one. so you had more churn than android, and a lower quality at every stage. i’m sure people remember it fondly, but i doubt many of them hacked on it!
you don’t need python to come pre-installed from the factory. if you want python on your android phone, just go to the play store and download it. “doctor, it hurts when i don’t download the apps i want to play with.”
the list of things that should be easy is absolutely incoherent. messing with notifications and the lock screen is not simple, it’s going to be hard anywhere you go. it’s fundamentally a hard problem, and one that’s going to require centralization. and one that open source solutions have a real struggle to get a handle on.
but sending accelerometer data over the network is easy! just download the android SDK and you can do it from cutting and pasting stackoverflow examples in an afternoon. i know because i made an android app to stream touchscreen and camera data over the network.
and usb is a fine peripheral interface for a phone, and gives you access to just as many GPIO opportunities as I2C does.
i am super frustrated by where android development is heading. and i’m pretty bummed about how hard it is to re-purpose old phone hardware. but this article is astonishingly wrong. if you want to hack a phone, just hack a phone. if this article was complaints coming from someone who had hacked a phone, i’d be nodding along. but instead it’s just pointing fingers of blame at other people, when it’s the author who decided not to hack the phone.
I’ve N800 and N900 and as always, the expectations were far nicer than reality when having them in my hands. SIGH!
I had (and still have) the N770, the predecessor to the N800. It was sloooooooow as heck and really no fun to use. That resisitive touch screen was dim and very “not so responsive”. Without the stylus it was trash haha. Wi-Fi was okay but drained the device quickly. Charging port was a super tiny barrel jack instead of the then standard mini USB…
Man I should get a new battery for that thing and fire it up :)
I want to phone that I can use whatever software I want on it, and more importantly, remove software I do not want or need from it.
Try removing Facebook or YouTube from most Android and Apple phones. It will tell you it can’t. And next time there’s an update of the OS (which you probably didn’t want anyways), it’s back.
The only reason for this is because they sell your data and tracking you is too important. Maybe it would be a lot better for humanity if we just make data brokers illegal.
The really weird part is in the USA it’s illegal for the government to do what big tech is selling to any and all. Doubtless including the government.
i’ve had 8 phones and i’ve never seen factory-installed facebook. i’ve never tried removing the ‘g suite’ apps (youtube, gmail, etc) but generally it’s as easy as clicking ‘disable’. they’re sometimes in a read-only partition but you can ask the OS to ignore them.
vendors do often stick a bloatware skin over android that you will struggle to remove, but generally you win if you hack at it. for example, my nvidia shield tv updated to have an awful home screen UI and it took me a couple hours to get flauncher on it instead. i haven’t seen the stock one in years and i have let it upgrade.
i think the word ‘most’ is interesting there. i’ve had a few samsung devices that were pretty locked down and also intolerable in their factory configuration. but every other android device i’ve owned, i’ve generally been able to unlock it pretty thoroughly. in fact, despite all the hacking i’ve done on phones, most of the phones i’ve had, i have kept in relatively stock configurations. for example, my oneplus nord n20, you can fully unlock its bootloader but i haven’t bothered. anecdotally, the “chinesium” android devices you can buy for unbelievably low prices on ebay or temu all seem to be factory-unlocked…i’ve got a 10″ tablet that even came with SuperSU pre-installed! literally 0 effort to get to a root shell.
sorry :) i’m still just railing against “i can’t be bothered to hack my phone” being misconstrued as something it isn’t. i think people too easily go from “i once struggled with xxx a decade ago” to “the struggle against xxx is infinite and unwinnable.” are we not hackers?
A smartphone could host its own development platform, but should it? If I’m typing a bunch of code, I want the keyboard and big screen of a PC. I would say if you want a development environment on a smartphone, something graphic based like a more powerful version of Scratch might make more sense than a more conventional IDE.
When the smartphone is all you have, putting some onboard development can make sense. But otherwise this makes only slightly more sense than putting a development platform on an OpenWRT router.
As for ports, a smartphone looks like a better candidate for interfering with something over a wireless connection or maybe sending serial over USB. It’s not an Arduino or even a Raspberry Pi. A smartphone works better as the user interface with something else handling low level tasks.
I suppose when all you have is a hammer…
an anecdote to back you up…i went through an absurd effort to get self-hosted gcc on one of my ipaq palmtops. after all that work, i used it exactly once. haha before that i wrote a self-hosted compiler for a novel language on my psion revo / mako, and i used that exactly once as well. like you say, just not a compelling experience.
the funny thing is i actually code on the thing all the time (to get work done in the odd leftover moments from parenting) but these days i just use ConnectBot to ssh into my big pc. the network is the computer.
If they were hackable would they still be FCC approved?
Not an FCC lawyer, but I think so. As long as nothing you’re doing changes stuff in the broadband module, you should be good.
And I don’t even know when the last time we had any access to the broadband was. Nexus 5?
https://hackaday.com/2016/09/08/nexmon-turns-nexus-5-and-rpi3-into-wifi-toolkit/