HNHacker News
TopNewBestAskShowJobs

timschumi

611 karma · joined December 25, 2021

submissionscomments
timschumi··on LineageOS 22
The user-side will work with all kernels that contain the matching driver, but the user-side will not necessarily work on future Android versions without modification.
timschumi··on LineageOS 22
The kernel side of drivers is already published under a FLOSS license, it's just that the code quality is usually subpar and the important changes are crammed into a tarball together with (sometimes) millions of other lines of changed code.

The sources for the matching userspace binaries (which are usually the issue for Android version bumps) are usually under NDA by the component manufacturer and can not be released by the OEM independently.

timschumi··on LineageOS 22
There also is an updated version with fixes that never got merged into upstream Heimdall: https://git.sr.ht/~grimler/Heimdall
timschumi··on LineageOS 22
GrapheneOS only supports devices that are still supported by the OEM, and they generally seem to have very few modifications that touch on frequently-changed parts of AOSP. In short, they can be relatively certain that nothing will break when they rebase, Google does the work for them.

On the other hand, LineageOS runs a lot of devices at the very (lower) edge of compatibility, which means that (with Google pushing large changes quarterly instead of yearly) the build roster has to be reevaluated quarterly instead of yearly as well. This was not anticipated properly for the Android 14 (LineageOS 21) cycle, which resulted in 19 devices not being able to be built on a previously supported major version (and therefore dropping from the roster completely).

In addition, the components that have been causing rebase conflicts each year now have the opportunity to cause rebase conflicts multiple times a year.

timschumi··on LineageOS 22
Yes, donations are cool, without them there probably wouldn't be as many build servers (among other things).

However, if donating means that you have to consider your current paycheck size, then it might be more appropriate to put that idea on the back-burner for a while.

If you don't have to make that consideration and/or you feel strongly obligated to donate, then by all means, please do so.

timschumi··on LineageOS 22
To quote from somewhere else:

Just to emphasize this for anyone else who is reading this: Please do not feel obligated to donate.

Yes, it is greatly appreciated, since it keeps the lights on a little while longer and allows us to provide builds and host continued development. However, we regard donations as having no strings attached, and the same applies for using the builds that we provide.

We will be fine, at the very least for a while. Please think of yourself first.

timschumi··on Malloc broke Serenity's JPGLoader, or: how to win the lottery (2021)
Apart from the fact that this probably isn't common knowledge, this article is from 2021 (which the OP failed to disclose).

Why not be mad at IEEE for a change? They apparently only managed to ban use of the image in April of 2024.

timschumi··on LineageOS 21 Released
> if it's such a problem, have you thought about straight up merging the mini-app store and sandboxed GPS package from the GrapheneOS codebase?

I'm sure at least someone has thought about doing that. However, including any amount of GrapheneOS code is considered a no-go.

> Or, to throw another wild guess, are you perhaps concerned that the "blind eye" only extends to Graphene, since they target Google's own devices only [...]

The "blind eye" in this case is the assumption that the permission to use Google Apps is attached to the device, not the software that is running on it (I'm not sure if this was ever communicated by Google in private or publicly).

While GrapheneOS still has the lowest amount of friction (because they only ever ship the devices that Google ships, with the respectively matching Android version), we hope that this licensing assumption applies to everyone equally.

> (and are lower profile in general, and also apparently contribute a lot of upstream code), while Lineage is much more widespread and well-known so it wouldn't get treated as nicely?

LineageOS being somewhat well-known and wide-spread is indeed something to be considered. As an example, PixelExperience both ships Google Apps built-in and has obvious points of conflict in regards to trademark issues, yet continues existing. We are not keen on finding out whether Google has changed their stance or whether PixelExperience is simply small enough to be flying under Google's lawyers' radars.

For what it's worth, we regularly try to contribute upstream as well, but get ghosted most of the time on things that aren't trivial. :^)

timschumi··on LineageOS 21 Released
> I've always found the requirement to install these things before reboots odd and it leaves me afraid to do an upgrade (I have no memory of what I did last time and apparently if I do it differently everything will be irrecoverably different?)

The only thing that matters is "did you have Google Apps or not?". This fact can not be changed without doing a factory reset, or your OS will be terribly confused. It shouldn't matter _which_ flavor of a Google Apps package you installed (although the officially recommended one only has one flavor anyways), for this purpose they are freely interchangeable. I also haven't seen any other addon that has this particular destructive trait, so you should be fine as long as you pay attention to "Google Apps or no Google Apps?".

> I'd be happy if the process were always a full reset followed by choosing what to run until the next full reset.. And maybe it is (?) but I never understand what people are talking about in android land.

You are free to do that, and this is basically the fallback option in case anything related to Google Apps goes wrong while upgrading. It's just that most users don't want to reset their devices each time that a major update appears, so the instructions jump through hoops to accommodate them.

Backups are (of course) always recommended, no matter the circumstances.

timschumi··on LineageOS 21 Released
> I imagine they went with the first option you listed, since they famously ship Google Apps as a sandboxed unprivileged optional package through their own mini-app store. Do you have any idea how they got around those licensing requirements?

The important difference (I imagine) is that they still don't deliver Google Apps built into the ROM (which was what Google was disagreeing with 15 years ago).

The current consensus is that it's OK for a separate Google Apps package to exist, and that Google will turn somewhat of a blind eye under the assumption that the package will only be used on devices that have been licensed for use of Google Apps by their respective OEM.

timschumi··on LineageOS 21 Released
These are two different devices.
timschumi··on LineageOS 21 Released
> Version upgrades were also a PITA.

Sadly, they have to be.

We can't ship Google Apps due to licensing restrictions (and even if we could, a very vocal subset of users probably wouldn't like that), but not upgrading Google Apps (and/or select other addons/components, for that matter) during a major version bump breaks the installation beyond repair.

It's unfortunate that this is the case, but there is no way around telling users to do major version upgrades manually instead of doing it all in-system.

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
The programmer that I bought was already wired up for 24 series and 25 series chips, so I assume the pinout matches whatever is in that respective datasheet.

The 25Q32BVSIG operates on 3.3V, so this particular programmer was compatible by default, but for 1.8V one would have to watch out indeed.

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
> note to self: I haven't yet checked whether any of the *BSDs can read EFI variables in general and on this hardware in particular

Good news: FreeBSD is able to read the whole variable list.

Bad news: I just wiped my test drive with all the in-progress kernel patches by accident.

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
It seems like that is no longer the case. I was able to successfully retrieve a non-standard variable using the `UEFIv2` PowerShell module [1] (which is just a thin wrapper around the undocumented `NtEnumerateSystemEnvironmentValuesEx` function) without actually naming the variable in question.

To the untrained layman like me, this sounds like Windows actually is querying via `GetNextVariableName`, because UEFI doesn't seem to offer any other interfaces that aren't "get/set variable by name".

[1] https://www.powershellgallery.com/packages/UEFIv2

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
> Makes sense! I wonder if there is a way to dynamically watch the Windows call, to compare it with the Linux one, to avoid the tedious reverse engineering. Or if the syntax of Windows GetNextVariableName() use is generally understood/documented?

The userspace interface is somewhat documented by third-parties (because it is technically internal). However, the important parts happen kernel side, and I'd rather avoid diving too deep into Windows because some very interesting job postings (understandably) have "No exposure to Microsoft code or reverse-engineering of Microsoft software" in them.

I already tried getting to the service handler implementation via Linux, but memory protections made it weird enough that I was even questioning whether it was returning correct raw data when trying to read it from memory (or I have been looking at the wrong set of headers).

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
I haven't, and (as I already said) I also haven't tried any of the BSDs yet. I put both on the list of things to try.
timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
Luckily, it was the type of flash chip that I could use an external programmer and a test clip for. I haven't actually ever tried reading/writing through the internal programmer.
timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
I guessed which chip it was (with a little bit of help from leaked schematics for similar laptop models), bought the first programmer that I saw online that appeared to be compatible (anything with a CH341A in it, apparently) and ran `flashrom --programmer ch341a_spi -r bios.bin`.

Had there been any more than one possible type of chip and more than three of these similar looking chips on the [accessible part of the] motherboard, I'd probably still be sitting here trying to figure out what to do.

In any case, I'll try and add it to the blog post once I figure out how to do footnotes. :^)

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
As far as I have tracked it down (quite literally up to the point where it switches into the EFI context to run the respective service handler), the UEFI denies a call to `GetNextVariableName` with `EFI_INVALID_PARAMETER` (that part is actually indicated in `dmesg`) even though the request appears to be specification-compliant (and the existing implementation evidently hasn't been an issue on any other notable hardware).

The main issue with fixing it properly is that I'd most likely have to reverse engineer the Windows kernel or the UEFI firmware itself (note to self: I haven't yet checked whether any of the *BSDs can read EFI variables in general and on this hardware in particular) to figure out where the request is going wrong/what Windows is doing different.

It's not impossible, given that one can unpack the UEFI PI firmware image into all the separate modules, but going through them to figure out where variable management is implemented will still take me a few weeks at least (not due to any particular challenge, it's just consuming a lot of time that I don't have right now).

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
> The only other OS getting installed is Windows, and that's probably coming straight from a disk image or a recovery partition.

> Especially in laptops, a lot of hardware / firmware issues are simply "solved" by baking a fix into the pre-installed Windows version. It's a solution for 99% of users, so why bother spending time looking into the root cause?

The Windows versions I installed for testing were non-OEM versions. They still behaved as expected.

Notably, Windows didn't just know about all the standard UEFI variables, but also about a non-standard one that I added for testing. This means that there definitely is a way to ask for the list of variables so that the UEFI accepts it (sadly, reverse engineering that is a pain), and that the Linux kernel is most likely the place where an actual fix has to happen.

Of course, yes, at the end of the day, the root cause is a specification non-conformity in the UEFI itself.

timschumi··on Investigating a vanishing BIOS on the Fujitsu Lifebook AH532
> Ultimately, each are OS-specific solutions, while it would be interesting to make a crossover between efibootmgr and GetSetVariable (and that C program) to create a tool working on both Linux and Windows

I seems that nobody except for Linux (for some not yet determined reason) is having issues with retrieving EFI variables on this hardware, and one could potentially classify this as a bug in `efibootmgr` as well (due to how it handles creating the new entry in unknown conditions).

In either case, Linux is the only thing affected by this, so in real-world setups Linux is going to be the only boot option that is available while the boot menu is in a broken state.

timschumi··on I have received a $100k sponsorship for Ladybird browser
> While looking at their other project I am curious that the author has decided to invent their own memory safe language currently implemented as transpiler to C++ written in Rust. [...] I can imagine potential nightmares when debugging such concoction.

Compatibility with C++ is required at this point in time to interface with the thousands of lines of C++ code that have already been written. Assuming that everything will be written in Jakt at some point, then one could look into making more grave changes without having to care about compatibility (including maybe skipping the C++ part alltogether).

> Why not to just use Rust as their system language.

Rust has been evaluated, but discarded (mainly, iirc) due to it's approach (or lack thereof) for OOP. Also, the whole "we want to make things ourselves" thing.

timschumi··on LineageOS 19
The reason why auto-install doesn't work for major version upgrades is because Google Apps are version-specific, and LineageOS isn't allowed to ship Google Apps without paying for certification by Google (and, in fact, disregarding this _will_ result in cease-and-desist letters).

This means that ~95% of users would break their installation by pressing the "auto-update" button because they didn't update their GApps accordingly.

Also, nowadays there is the problem of requiring a certain version of the built-in firmware as well, and in case there are any incompatibilities, a major version upgrade is the perfect time to require updating that as well.

timschumi··on LineageOS 19
> I just wish the devs clarified timelines around merges (but not builds) on older branches.

"When it's ready."

Stuff is merged in once it's well tested and ready. It also is only updated as long as someone still cares to update it.

timschumi··on LineageOS 19
Unfortunately, because we get enough trolls and spammers as-is, and I don't even want to imagine what happens if we lift that restriction as well. Sorry!
timschumi··on LineageOS 19
That table is wrong by the way. 17.1 went out of support this February, not last April. It also continues to receive security patches.
timschumi··on LineageOS 19
> They ship userdebug builds as production releases

`userdebug` is used to have a few specific debugging capabilities that aren't available on a `user` ROM. Note that this is not the same as the standard `userdebug`, as most security measures that would otherwise get removed are manually reinstated.

> pretend to support devices past their vendor EOL (which is impossible since Lineage can't provide security updates for firmware etc.)

So... no security fixes at all are better in your opinion?

> ship the F-Droid Privileged Extension (which uses an incorrect approach to implementing unattended updates),

Where are you getting this from? Neither F-Droid nor its privileged extension is included in the system.

> don't support locking the bootloader to enable verified boot on many supported devices

There is nothing that inherently prevents you from relocking your bootloader on LineageOS. But technically, something may go wrong at any time, so it neither is officially supported nor endorsed, and the keys necessary for relocking the bootloader are not provided.

If someone wants to, they can always just build LineageOS themselves (with all system modifications built-in, because anything else would break the signature), sign it with their own keys, and reconfigure their bootloader to use that key.

timschumi··on LineageOS 19
The Galaxy S3 and the Galaxy S3 Neo are entirely different devices from a software engineering perspective. The device name is not a reliable indicator for this.
timschumi··on LineageOS
> A fun side-fact is that they use Bromite (great version of Chrome) as the default browser without crediting the author, just calling it "Browser". As a techie I don't like this obfuscation, but for non-techies it must be great.

They seem to have that issue with a lot of things.

At one point they were stripping existing copyrights out of the apps that were taken from other projects.

Changing the display name of an app definitely is one of the more innocent things to do, and most developers likely wouldn't even object. As an example, LineageOS uses Etar as the calendar app (with their permission of course), which is named "Calendar" in the app drawer.

← PreviousPage 2 of 2