Hacker News new | ask | show | jobs
by saagarjha 3172 days ago
> Linux on Galaxy allows the latest Samsung Galaxy smartphone users to run their preferred Linux distribution on their smartphones utilizing the same Linux kernel that powers the Android OS to ensure the best possible performance. (emphasis mine)

I knew there was a catch somewhere. I seriously doubt there's a technical reason why older Galaxy models can't support running Linux as well. I don't understand why it's so difficult for Android manufacturers to allow users to install whatever they want–I bought my phone, now let me install what I want. Sure, void the warrant or refuse to support it, but don't get in my way.

10 comments

I think in this case the technical issue is connectors ... the latest Samsung phones use USB-C that can carry DisplayPort, mouse, Ethernet, etc.

Older ones had micro-USB, so they don't have the hardware needed for DeX.

We're all used to having desktop computers with generic x86 compatible processors and highly standardized internal interfaces and components, and compiling our software and installing it on any x86 computer we want.

Smartphones with ARM SOCs aren't like that because they aren't just a CPU, they also include a crapload of additional system components. Even SOCs like the Snapdragon within a specific model will offer many variations to the manufacturers. Outside the SOC itself, phone hardware is far less standardized than on a PC. You can't compile your Linux distro for ARM then install it on any smartphone, the kernel needs to be tailored to the specific phone. That's why even though unlocked Android phones are around it really takes the manufacturer themselves to be able to do something like this because only they have the detailed understanding of the platform and the resources. Otherwise, other people would be doing it.

The Linux Device Tree infrastructure was created as a hardware description for hardware that cannot describe itself at runtime, which is mostly ARM SoCs. However that only works when hardware drivers are wired up to the device tree infrastrucure instead of being fully hardcoded. Given the usual bare minimum investment in software by most embedded hardware vendors, many/most drivers probably aren't.

Given a set of hardware with the same instruction set and drivers with full device tree support, one can now create one kernel for the whole set.

Device Tree Overlays come to rescue, but only if OEMs actually do care.

https://source.android.com/devices/architecture/dto/

The closest to a "generic" smartphone is probably the Mediatek reference platform(s), indeed found in various Chinese smartphones. Except for presence/absence of certain peripherals like sensors, those tend to be almost identical in hardware and software. Source is unfortunately not officially available but occasionally leaked along with (extensive) documentation, and there's a small community of developers who work on these cheap devices. As a bonus, they also tend to have a completely unlocked-by-default bootloader.

https://www.slashdata.co/blog/2013/05/the-mediatek-phenomeno...

In a perfect world manufacturers would give out this information, but it's understandable that they wouldn't (this doesn't mean that I don't think they should, but I know why they wouldn't). The issue is with "locked" bootloaders–the manufacturer is going through extra effort to make sure you can't run another operating system on your phone. This is inexcusable since it's not just a passive lack of helpfulness, it's an intent to make sure you can't have full control of your phone.
You can actually compile the userspace (which is more or less most of what is meant by a distro) and install it on pretty much anything. I do this a lot. The kernels have to be recompiled but that's trivially easy.
> the kernel needs to be tailored to the specific phone

Out of interest, would it be possible to operate an ARM SoC system like a generic x86 system, if drivers were upstreamed? Or is there too much SoC specific code?

The problem is that in many cases there's no nice automatic way to probe for devices, you just have to know the board config ahead of time. That's why device tree is so great, if the hardware manufacturers cooperate and upstream their code then you'll end up with something like the IBM PC.
Because the effort to make it possible is non-zero, while the userbase which would actually use it is close to zero. In my experience of enterprise software development, anything that costs more than 0 and is not essential is just not getting done, because....well, why would it be?
Jeez man. They want to do something extra cool and you shit on them for not openly supporting old devices. Nobody is stopping you from rooting your device and installing whatever you want on it.
I don't think it's just that, the point is that under the current Android HW situation, phones are locked to kernel versions. Any necessary kernel updates after release are then manually back ported to that kernel version. So that means you won't be able to install any Linux system, you'll have to run that provided by Samsung, running their own custom kernel.

Although I agree we should be supportive.

The kernel sources are all out there, the kernel part of the BSP is GPL by necessity. Samsung actually makes some effort to upstream a certain amount of the kernel code coming from their chipset vendors (because Samsung uses entirely different chipsets for different markets, so it's more convenient to have fewer downstream patches).

There is nothing, and I mean nothing, to stop you from forward-porting any driver or device tree to a new kernel, except for the desire to do so. It would be nice if device vendors maintained trees continually rebased on Linus's tree , but I'm sure you know they don't see the point.

The drivers are proprietary.
That only means that the matching kernel drivers can't be upstreamed, that doesn't mean you can't forward port the kernel drivers. The kernel drivers are open source.

I personally wouldn't settle for a system with a closed source userspace, but Brakenshire said that you're stuck with an old kernel, which is just not true.

> The kernel drivers are open source.

Why does Replicant have so many problems getting Wifi, 3D acceleration, etc. running then?

Older devices are probably on much older kernels that most distros stopped using a long time ago. It's not really practical to try and bridge that gap.
They are only on old kernels because of proprietary kernel module blobs. Open source those and a thousand developers will line up to mainline them for device support.
That would be nice, but nobody really has any incentive to do that.
"I seriously doubt there's a technical reason why older Galaxy models can't support running Linux as well. I don't understand why it's so difficult for Android manufacturers to allow users to install whatever they want"

Can you do this (install arbitrary OS, etc.) on any of the google nexus devices ? I have never used one but my impression was that they had totally unlocked boot loaders, etc.

If the bootloader is unlocked / fastboot can write to the bootloader / etc you can put whatever code on your phone you want to run.

The problem is the hardware is undocumented and the shipped drivers are proprietary so you would need to reverse engineer support for everything from the chipset to the modem to the display adapter.

So you can go throw a Debian Arm image in place of a system partition on many Android phones... it just won't boot.

That isn't true. It will actually boot. In fact, you will even have unaccelerated graphics. Depending on the phone, you will probably have working Bluetooth. WiFi will work if you copy the firmware image from the original Android installation. Touch screen will work perfectly fine. Power management and thermal management are going to be a lot of work. Graphics acceleration is unlikely
"So you can go throw a Debian Arm image in place of a system partition on many Android phones... it just won't boot."

Won't even boot ?

I would expect that peripherals and radios and so on would be out of reach due to hardware/drivers but my expectation was that you could boot and get serial comms somehow ... as unusable as that would be ...

Probably the docking station is the only technical reason blocking older devices, and Samsung doesn't want their customers running Linux on Galaxy without the docking station.

You've got several choices for running a GNU/Linux container on Android/Linux already: Lil Debi for rooted devices, GNURoot for a full distro on non-rooted devices, and Termux for a quick-to-get-running and reliable CLI distro.

Just a side thought. But afaik in all of europe you do not void your warrant when you root your phone or otherwise brick it software sidely. Its usually written somewhere, but afaik not legally enforceable (because as you said, you bought the hardware).
Can you explain how they are getting in your way? It's possible for you to unlock the bootloader on your phone to run a custom kernel?

What is the catch? That they've put development effort into supporting newer phones.

> It's possible for you to unlock the bootloader on your phone to run a custom kernel?

No, due to proprietary firmware and drivers you're tied to a specific Linux kernel version.

I hope the CEO of Samsung comes out and says "You know what, we're canceling this project because saagarjha couldn't just take a nice thing at face value and had to complain. There, so now now Linux on the old galaxies or the latest galaxies. Enjoy, earthlings."