Day 0

« – Hello, sir. Please sign here for the package.
– There you go. scrible
– Thank you sir, have a nice day ! »

Ooh, what's in heeere… the box says « Samsung », so it must be my first smartphone, recently acquired for the incredible price of €[REDACTED] !

Zelda chest jingle !

There it is ! My brand new Samsung S5 ! I feel so technologically updated right now ! Let's power it up and see what's in it… if I just hold this button, it should…

HELLO CUSTOMER. I AM SAMSUNG. I AM GOOGLE. PLEASE TAKE A MOMENT TO HAND OVER YOUR VALUABLES, DATA, AND THE SOUL OF YOUR FIRST BORN TO ME !

…how about no. Sesame, shut down !

SHUTTING DOWN NOW.

Ooo-kay. Let's look into CyanogenMod tomorrow.

Day 1

CyanogenMod Status – List of supported devices:
Your Mom
Your Sister

Samsung S5
Samsung S5 (China)
Samsung S5 (Verizon)
Samsung S5 (Vodaphone)
Samsung S5 (Sprint)

Oookay… Great ?

Installation instructions:
/!\ WARNING: DO NOT USE THIS GUIDE ON VERIZON OR AT&T DEVICES ! These carriers enforce boot image signing and attempting to use this guide will end in misery/tears.

God bless America, because they appear to require divine intervention at this point. I, however, do not. Up next: eleven easy steps and three pages of warnings and recommendations.

…with the device powered off, hold VOL DOWN + HOME + POWER, accept the disclaimer on the device, then insert the USB cable into the device…

DISCLAIMER:
I AM SAMSUNG. I AM YOUR GOD AND SAVIOR, AND NOT TO BE TRIFFLED WITH. YOU ARE HEREBY TOYING WITH FORCES BEYOND YOUR COMPREHENSION, FOOLISH MORTAL. HOW DARE YOU CHALLENGE ME ! GIVE UP NOW, AND I WILL SPARE YOUR WARRANTY, OR PRESS VOL UP FOR A PLAGUE OF LOCUSTS.

Selecting: Plague of locusts.

FOOL ! YOU WILL PAY FOR THIS !
Downloading third-party software.
Waiting for USB to respond…

# heimdall flash --RECOVERY klte-recovery.img --no-reboot
Device detected successfully.
Attempting upload…
LOL FAIL !

Phone status: soft brick.

It's like a brick, but not so tough.

FOOLISH HEATHEN ! YOU HAVE DOOMED YOURSELF ! REPENT, AND I SHALL REINSTATE THE OPERATING SYSTEM THAT WAS ONCE CHOOSEN FOR YOU.

Selecting: Repentance.

THE WILL OF SAMSUNG HAS BEEN RESTORED. YOU ARE FORGIVEN, CHILD. NEVER SHALL YOU SIN AGAIN !

Reboot into download mode. Accept disclaimer. Exercise Google-fu.

# heimdall flash --RECOVERY klte-recovery.img --no-reboot --magical-thinking --fairies --unicorn-magic
Device detected successfully.
Attempting upload…
Trying super-secret Samsung handshake…
EPIC FAIL !

FOOLISH HEATHEN, ETC., ETC. !

Selecting: Repentance. Shutdown.

Additional super-secret DuckDuckGo-fu: bang-ge technique ! Lots of results.

TL;DR: There's the Samsung S5, and then there's the Samsung S5 New (Neo in Europe). They are not to be confused. The new model is harder, faster, better, stronger, in the sense that there is no CyanogenMod support for it.

Day 2

Still no Cyanogen support. Some people on the CM forums have been wondering if support is comming.

To pass the time, I have started the device in offline mode, and disabled every application with "Google" or "Samsung" in their names.

Obviously, none of these applications can be removed.

Day 5

Still no CM support.

Day 12

Still no CM support. More posts on the forums. Phone is starting to gather dust.

Day 23

Still no CM support. People on the forums have been asked (nicely) to please shut the fuck up.

Day 62

Still no CM support. Warranty is ticking. Phone is covered in a thick layer of dust.

Day 65

Still no – oh screw this, I'm rooting it. I will hunt and kill every single one of Google's minions by myself if need be. DDG-fu, go !

www.ezpzroot.ch/root.php?phone=SAMSUNG%20S5%20NEW wrote:

For to root the SAMSUNG S5 NEW device you have, just follow the 5 easy steps ! This guide will explain you how to unlock the phone root for your SAMSUNG S5 NEW in totally not shady way, all you need to do is unquestioningly download the files below and it will be root with ease !

Seems legit. Not.

Additional search-fu lands me on the very international forums of xda-developpers.com, where merry hackers from China, Russia, Poland, Nigeria, Zimbabwe and Unspecified are providing seemingly useful (though grammatically dodgy) advice for other people who speak their language.

Pop quizz. What are:

Most of the forum's contents are typically noun phrases using the above vocabulary. Verbs too complicated. They not needed. Also, conjugation hard. Easy to understand if you know things in first place. Otherwise, why you here ? This is serious people place. Also, you require Windows. Other OS not supported. This not place for freedom, this place for root and custom ROM.

Curses. My lovely penguin is foiled again.

In theory I could totally run leaked, mostly-illegal, absolutely unsupported internal Samsung software under Wine, and then have it flash my phone's firmware, but this somehow sounds like a terrible idea. I need… a host.

Day 72

Special thanks to Draklia for granting me access to their lair^H^H^H^Hlaboratory. Fellow mad scientists are people you can always count on. They said I'd be liable for any kind of damage, present or future, and that they will hunt me and my family if anything happens to their computer. Seems fair. Let's do this.

I AM SAMSUNG. I AM GOOGLE. WILL YOU OFFER YOUR BLOOD FOR ME ?

Reboot happens. It… works ?

I AM SAMSUNG. I AM GOOGLE. I AM CHAINFIRE THE ROOT HACKER. WILL YOU PAY FOR CHAINFIRE ROOT PRO ? IT'S TOTALLY RAD.

Somehow, this doesn't feel like a big improvement.

Day 72 (cont'd)

How do I know if I'm root ? This is supposed to be Linux-based right ? So there must be some sort of shell somewhere ? If I see a sharp instead of a dollar, I win.

As it turns out, there is no builtin console. This sadly makes sense: trigered from what keyboard ? But some dude called Jake Palevich has developped an app called Terminal Emulator for Android (PEGI 3, not making this up), available on Google Play. I will thus use Jake's Term.

It turns out that rooted phones (and even non-rooted ones if you tap the right tickbox) can install applications from APK files, transfered on the phone's memory via USB. This takes us to…

(*) Under Windows. Windows Update will automagically download several drivers over the course of a couple minutes, then leave you able to transfer files.

I use Alia's login, like some sort of app thief. I never realized I could, much less would, one day, steal freewares from a friend, yet here I am.

Solution: At this point, my phone is under the simultaneous control of Samsung, Google, and some dude called Chainfire. Might has well hand it to Jack on top of it. I seem to have run out of fucks to give. I feel like some sort of data whore. I secretely hope they will all fight and cockblock each other for the exclusive control of my phone, and leave me alone. Let's just install and try it out.

$ whoami
NOT FOUND.
$ tty
NOT FOUND.
$ man
NOT FOUND.
$ info
NOT FOUND.
$ help
NOT FOUND.
$ # sigh
$

Well. I knew Bash was a luxury, but still.

Day 73

Back home, a few hours later.

$ su
[GRAPHICAL PROMPT FROM "SuperSU".]
# passwd
NOT FOUND

Well, yeah, obviously. Silly me.

Anyway. Let's upload my music. I just need to plug in the phone via USB and…

THIS OPERATING SYSTEM DOES NOT SEEM TO BE WINDOWS XP. IT MAY NOT BE SUPPORTED. THERE IS A MACOS GOOGLE THINGIE AVAILABLE FOR YOU IF YOU, APPLE PEASANT, WISH TO TRANSFER FILES.

Ah. Yes. I forgot. DDG-fu !

https://wiki.debian.org/mtp wrote:

TL;DR: We got you covered, dude.

Neat !

root@cortana# apt-get install jmtpfs
root@cortana# cd /media/drfred
root@cortana# mkdir otto
root@cortana# chmod drfred:drfred otto/

drfred@cortana$ jmtpfs /media/drfred/otto

It works, bitches. Also, cortana is the name of my first windows-free gaming-dedicated computer. It's ironic. Also also, I have chosen to name my device "otto". Have you seen Wall-E recently ? If not, go watch it. Yeah, that's why.

drfred@cortana$ cd /media/drfred/otto/Phone
drfred@cortana$ mv Music music

This capitalization thing is getting on my nerves.

drfred@cortana$ cp -R ~/music/bandcamp music/

That's seven full albums of Miracle of Sound. Wait, people on the interwebz seemed to complain that MTP on Linux was unusably slow. Maybe I shouldn't have… what ?

Over already ? But how… ?

drfred@cortana$ sync
drfred@cortana$ fusermount -u /media/drfred/otto

TOOLS -> My Files -> Audio (432 MB)

All the files are here. No folder hierarchy (wat). Such is the miracle of USB 3.0, which I'm still not used to. Let me just play one to check if…

Sorry, the player does not support this type of audio file.

Ogg. Ogg Vorbis. It's an open standard. It's been around for decades. Very lightweight, which explains why only 432 MB. It existed before smartphones were even a thing. It is the preferred audio format of all Linux-based operating systems. All of them, except for one, who cannot understand it. Android. Google's.

How could I not expect this ? It was obvious.

More sideloading to come…

Day 73 (cont'd)

u0_a165@s5neolte:/$ su
root@s5neolte:/#

Your lack of names disturb me.

root@s5neolte:/# cd etc
root@s5neolte:/etc# vi hostname
vi: Not found.
root@s5neolte:/etc# nano
nano: Not found.
root@s5neolte:/etc# ed
ed: Not found.
root@s5neolte:/etc# emacs
emacs: Not found.

In truth, I never expected them to actually work, but I had to try. Nevermind, I have echo and a working shell so this should be easy as echo otto > hostname; first…

root@s5neolte:/etc# cat hostname
hostname: Not found.

This is gonna be hard.

Dang. This is still UNIX right ? There has to be a file somewhere with "s5neolte" written in it somewhere. Maybe I can ?

root@s5neolte:/etc# find .
find: Not found.

Well, duh. Also, typing with this is a real pain. I use autocompletion all the time when I have an actual keyboard, and the day I'm stuck with a device that badly needs it, there is suddendly none ? Can I at least set up aliases ? It turns out that env: Not found., but there is a $SHELL variable which is set to sh in userland and sush (« Who are you and what have you done with plain old sh ? ») as root. Let's see…

root@s5neolte:/etc# cd
root@s5neolte:/# echo 'alias c="clear"' > .shrc
sush: Can't create .shrc: Read-only file-system.

Makes sense, I guess. Where am I anyway ? Maybe I can find the home-equivalent without find if I just type mount

I AM ANDROID. I HAVE SIX MILLION FIVE HUNDRED AND SIXTY SEVEN THOUSAND THREE HUNDRED AND NINE MOUNT POINTS AND I WILL DUMP ALL OF THEM IN YOUR PUNY 35-COLUMNS TERMINAL, WRAPPING AT 80 COLUMNS JUST FOR FUN, UNTIL YOU START WEEPING BLOOD TRYING TO MAKE SENSE OF THEM.

God dammit. How will I find these files now. And obviously there's no grep here…

root@s5neolte:/# grep
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZz] [-A num] [-B num] [-C[num]] [-e pattern] [-f file] [--binary-files=value] [--color=when] [--context[=num]] [--directories=action] [--label] [--line-buffered] [pattern] [file...]

Oh. Hem. Gee. That's an actual grep. With colors and shit. Everything is there. Now if ls would just play ball…

root@s5neolte:/# ls -r
ls: Unknown option '-r'. Aborting.
root@s5neolte:/# ls -R
[AN ABSOLUTE APOCALYPSE OF VARIOUS /PROC CONTENTS AMONG OTHER THINGS.]

And there was much rejoicing. I hit ^C, where the caret stands for « VOL UP ». I can now come up with a poor man's find.

root@s5neolte:/# ls -R | grep Sirona
01-Sirona.ogg
01-Sirona.ogg
01-Sirona.ogg
01-Sirona.ogg

Okay. This is not very helpful yet, and one wonders what sort of asinine file system hierarchy leads to a unique file being found in four different places, but we're getting there. Now how do I convince recursive ls to give me the full path, when there is no manual pages and --help or -h are not implemented…

Some minor hackery later. (Also: chaining UNIX commands with a Samsung virtual keyboard is an absolute PITA.)

Okay. My files can be found under the very obvious /sdcard folder which I dutifully ignored because I was pretty sure I never put any kind of SD card in that phone. Nevermind that. Let's get some data, motherfuckers. HOW DOES IT FEEL BEING DATAMINED IN TURN, HEH ? WHERE IS YOUR GOD NOW, MISTER SAMSUNG ?

root@s5neolte:/sdcard# mount > mount.log
root@s5neolte:/sdcard# ps > ps.log
root@s5neolte:/sdcard# ls -R / > ls_full.log
root@s5neolte:/sdcard# netstat > netstat.log

And then:

drfred@cortana$ cp /media/drfred/otto/Phone/*.log .
drfred@cortana$ vi ps.log
:%s/  / /g
Iterate.
:%s/ /\t/g
:set ts=10

Well. This is… much better. Readable, to begin with. First impression: either Google hides under the com.android prefix, or Samsung is actually dug much deeper than Google into my phone. Nevermind, I shall root their forces later. Also, while I have Internet over Wi-Fi, netstat output is in fact empty, unless I go ahead and connect to a website. Either there's something I'm not being told or this is actually… fine !

Allright. Before I start playing with iptables and my shell configuration and mess things up badly, I need some sort of, huh… stress test. Yeah. That's what I need right now.

drfred@cortana$ wget http://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=104456 -O /media/drfred/otto/Phone/Downloads/com.nyanticlabs.pokemongo_0.31.0.apk

What ? It's for testing purposes. I swear ! I need real-life data ! Also, is there a GPS file under /dev ?

Install this application ? It will have access to:
- take pictures and videos
- GPS localization
- sdcard files (read/write)
- full network access
- 5cc of blood from your second daughter

I was expecting worse. Call it victim mentality.

Day 73 (return of the revenge)

On the plus side, there exists a VLC Android app. Heading to APK Mirror, downloading VLC for arm64 (I... hope ?), installing.

Install this application ? It will have access to:
- sdcard contents (read/write)
- full network access
- change system settings
- draw over other apps
- start on bootup
- many other things
- the bones of your eldest son

What ? To play MUSIC ? Dammit VideoLAN, how can your player be worse than Pokemon GO ? Anyway…

App not installed.

What ? Why ? There is no GUI interface to be found with details on the error. Let's take a shot in the dark.

$ ls /var/log
Not found.
$ ls /system/var
Not found.

Screw this. Maybe with the help of a search engine…

Reasons for « app not installed »:
- You can't code, and have declared your main activity twice.
- There is no space left on the device.
- You're not installing in the right place.
- Try rebooting your phone.
- Try prayer.
- Try another app.

I'm pretty sure it's something about the architecture, but thanks anyways Internet.

$ uname
uname: Not found.
$ cat /proc/cpuinfo
[Something something aarch64.]

That's… ARM, right ? What's wrong then ? Let's head over to the official site and download the APK from their repos.

Download:

(Yes, I'm getting pretty desperate.)

ARMv8: App not installed. ARMv7: App installed. And there was much rejoicing.

On the plus side, I can technically read OGG files and my albums are sorted again, as they should be. The catch is that VLC mistakes OGG files for videos, cannot seek them, and the volume and sometimes play speed vary wildly all the time for no reason. That is, VLC cannot read OGG files properly. Son, I'm disappoint.

After some research, it appears that OGG is supposedly supported under Android, except for reports that it tends to fail with variable bitrates. The thing is, OGG Vorbis is designed for variable bitrates, and (sensibly) treats constant bitrates as a deprecated concept. So, yeah.

There is a mention on Xiph.org of RockPlayer for Android, which is a chinese, proprietary, ad-ridden application that purportedly supports OGG playback. How 'bout no.

Maybe the browser support is better through HTML5 ? Nevermind, audio tags are not supported. I take this as my cue to sideload Firefox. I brace myself for the Holy Mother of All Application Permissions Request…

OH MY GOD I WAS NOT READY.

I wish to browse the Web, Mozilla. Not install Firefox OS.

This is it, though. I hereby conclude that the app-based security system is somehow even worse than the user-based security system. I didn't think that was possible, yet here we are.

On the other hand, while my HTML5 tags still fail, OGG playback proper seems to work. So I have that – under Firefox. Which means I could easily play my music by setting up a local web server, and accessing it from Firefox. Mobile technology is great, because everything is so simple !