How to install Ubuntu Touch on Rabbit r1

There’s two methods, use this script, or use the installer.

I assume you unlocked the bootloader, and have mtkbootcmd.py working, if not see here.

What you need:

To use the installer:

All is done in the folder you put the script, and/or mtkbootcmd.py.

  • Backup your device with mtkclient-gui, go to read partitions and select all, then uncheck userdata, unless you have userdata you want. (To get mtkclient-gui to see your phone, turn it off, and plug it in.)
  • . venv/bin/activate
  • python3 mtkbootcmd.py FASTBOOT (To get into fast boot, run the command, turn Rabbit r1 off, unplug it, and plug back in)
  • Use the installer until it reboots it, and it says waiting for device.
  • Most likely a boot loop, click the reset button
  • python3 mtkbootcmd.py FASTBOOT
  • fastboot flash boot_a boot.img
  • fastboot flash boot_b boot.img
  • fastboot recovery

Script:

  • python3 mtkbootcmd.py FASTBOOT (To get into fast boot, run the command, turn Rabbit r1 off, unplug it, and plug back in)
  • ./flash.sh, in the folder you extract the script archive to.

The script is less work.

You can always run python3 mtkbootcmd.py FASTBOOT to get back into fastboot if you need to, and don’t forget the reset button.

You will have to mess with unplugging it and back in, not hard, but it requires it a lot.

Perhaps if you unlock the bootloader the official way, you don’t need the python script. But I don’t want their OS, or to make an account.

How to unlock bootloader on a brand new Rabbit r1

No idea what version of the OS mine came with. The script had issues in Distrobox. Too lazy to use my desktop, or setup a VM on my laptop.

You don’t need to email them and ask for permission, or even use the device following this method.

What you need:

frp.sh:

#!/bin/bash
LAST_BYTE=$(xxd -p -l 1 -s -1 frp.bin)
if [[ "$LAST_BYTE" == "00" ]]; then
    printf '\x01' | dd of=frp.bin bs=1 seek=$(($(stat -c%s frp.bin) - 1)) conv=notrunc
fi
read -p "[*] Unplug your device, press ENTER, plug it back in"

sudo ./mtkbootcmd.py FASTBOOT

echo "[*] Waiting for fastboot..."
while ! fastboot devices | grep -q "fastboot"; do
    sleep 1
done

fastboot flashing unlock
fastboot reboot

Copied and pasted the part of r1.sh for installing stuff, name it whatever, and run it, do it in the same folder as the other scripts:

#!/bin/bash

install_debian() {
    sudo apt update
    [[ -x "$(command -v git)" ]] || sudo apt install -y git
    [[ -x "$(command -v python3)" ]] || sudo apt install -y python3
    [[ -x "$(command -v pip3)" ]] || sudo apt install -y python3-pip
    [[ -x "$(command -v dos2unix)" ]] || sudo apt install -y dos2unix
    [[ -x "$(command -v curl)" ]] || sudo apt install -y curl
    [[ -x "$(command -v unzip)" ]] || sudo apt install -y unzip
}

install_arch() {
    sudo pacman -Sy --noconfirm
    [[ -x "$(command -v git)" ]] || sudo pacman -S --noconfirm git
    [[ -x "$(command -v python3)" ]] || sudo pacman -S --noconfirm python
    [[ -x "$(command -v dos2unix)" ]] || sudo pacman -S --noconfirm dos2unix
    [[ -x "$(command -v curl)" ]] || sudo pacman -S --noconfirm curl
    [[ -x "$(command -v unzip)" ]] || sudo pacman -S --noconfirm unzip
    [[ -x "$(command -v virtualenv)" ]] || sudo pacman -S --noconfirm python-virtualenv
}

install_fedora() {
    sudo dnf update -y
    [[ -x "$(command -v git)" ]] || sudo dnf install -y git
    [[ -x "$(command -v python3)" ]] || sudo dnf install -y python3
    [[ -x "$(command -v pip3)" ]] || sudo dnf install -y python3-pip
    [[ -x "$(command -v dos2unix)" ]] || sudo dnf install -y dos2unix
    [[ -x "$(command -v curl)" ]] || sudo dnf install -y curl
    [[ -x "$(command -v unzip)" ]] || sudo dnf install -y unzip
}

if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    if command -v apt-get &>/dev/null; then
        install_debian
    elif command -v pacman &>/dev/null; then
        install_arch
    elif command -v dnf &>/dev/null; then
        install_fedora
    else
        echo "Unsupported Linux distribution"
        exit 1
    fi
else
    echo "Unsupported OS"
    exit 1
fi

if [[ "$OSTYPE" != "linux-gnu"* || ! "$(command -v pacman)" ]]; then
    pip3 show virtualenv &>/dev/null || pip3 install virtualenv
fi

if [[ "$OSTYPE" == "linux-gnu"* ]]; then
    if command -v apt-get &>/dev/null; then
        sudo apt install -y adb fastboot
    elif command -v pacman &>/dev/null; then
        sudo pacman -S --noconfirm android-tools
    elif command -v dnf &>/dev/null; then
        sudo dnf install -y android-tools
    fi
fi

# Setup virtualenv and install requirements
python3 -m venv venv
source venv/bin/activate

chmod +x mtkbootcmd.py

# Download mtkclient
REPO_URL="https://github.com/AgentFabulous/mtkclient"
REPO_NAME=$(basename "$REPO_URL" .git)
git clone "$REPO_URL"
cd "$REPO_NAME" || exit
pip3 install -r requirements.txt

  • Backup your device with mtkclient-gui, go to read partitions and select all, then uncheck userdata, unless you have userdata you want.
  • To get mtkclient-gui to see your phone, turn it off, and plug it in.
  • Copy frp.bin from your backup to the folder you put frp.sh and put mtkbootcmd.py in the same folder.
  • Run frp.sh and it should modify frp.bin, flash frp.bin using mtkclient-gui.
  • After it’s done flashing, unplug your phone, plug it back in and click enter.
  • Make sure you are looking at the phone, and click volume up when it asks.

Well, it’s not exactly a phone, but can be used as one with Ubuntu Touch.

If you don’t use Linux, I can’t help you. Probably can easily be made to work on macOS, if it doesn’t already.

The script could probably easily be fixed to do everything for you, but I’m lazy. There is a command line mtkclient too, you get both when you compile it.

The command for mtkclient-gui is mtk_gui.

If you need to get into fastboot, you can run ./mtkbootcmd.py FASTBOOT. Or put python3 in front of it. You may have to do chmod +x mtkbootcmd.py on it for the script. To run it, you may need to run . venv/bin/activate.

Currently trying to cross compile the kernel, so I can compile WireGuard. May or may not work. Don’t bother running arm64 in Linux using QEMU, too fucking slow. I could use my Mac mini, but I turned it off, and don’t plan on using it. It has an ARM CPU. Using pbuilder to cross compile now. Just type pbuilder login and do it manually. Works in Distrobox, using a root one.

If you are using Distrobox, you may need a root one.

My laptop has Fedora Kinoite, too lazy to install the needed stuff, and reboot. Already need to install updates and reboot.

No SIM card in it yet. Still trying to get WireGuard to actually work.

Glad I don’t buy EA games anymore

Looks like they just sold it to Saudi Arabia and the dicktator’s son-in-law.

The anti cheat they use, I think is kernel based, so basically malware. Now the government can mass install malware to everybody playing EA games. They can modify it to do more then it already does.

Also glad I don’t use Windows.

Oh wait, bought an old EA game on my Xbox. I should actually cancel the online subscription, and get rid of the Xbox.

Rabbit r1 came

Should it be used as a phone? Not sure, slept for around 2 hours according to the health app on my iPhone, but probably in bed for three or so, and the battery was down to around 50%. Perhaps SSH did that. I was up till 7 AM because of a wrong password.

Oh and the OTA thing might do nothing. I click update and reboot, and it doesn’t reboot. I rebooted a different way, claims it’s the new version. But I don’t believe it, so flashing it with the installer.

24.04 is available OTA or in the installer now. I need a better USB battery, cause this Anker turd will only charge correctly with the short “special” cable it came with. Pretty sure the cable I used last time is an Anker cable, just longer and not “special”, but it’s supposed to handle a lot of watts, I forgot how much. Don’t know where the special cable is.

A how to will be written on rooting a brand new Rabbit r1, and another on installing Ubuntu Touch.

Well this post had all the info, but I need to clean it up, and make separate posts.

And I think to update, you just have to reboot into recovery… It failed to update, cause I’m using the installer. But the installer is working so far. I’d recommend rebooting into recovery before using the installer.

Looks like it worked so far. On the booting screen.

Yes the screen is tiny, and causes issues in some apps, like the terminal. Can’t even run nmtui or whatever.

And don’t make the scaling way too big. You’ll regret it.

The % of the battery is wrong, the bar is way fuller then 3%.

I think the specs say 1,000mah battery, so not surprising the battery life sucks.

Smartwatches for Ubuntu Touch

There appears to be three apps available:

Any watch compatible with any of those apps, should work.

The best watch that isn’t a pre order is probably the Bangle.js. It can be bought in the US for $150 from adafruit. If you don’t mind waiting, the Pebble is probably nice too. That’s assuming it works with RockWork. Not sure the new Pebble watches work with it, so you may need to write your own app.

If I get a watch, I’ll probably get a $40 preowned watch I can put AsteroidOS on. Probably won’t have a heart rate sensor, or maybe even step counting, but I don’t care. Or maybe you just can’t sync the data to your phone. Don’t want to spend $150. Says it’s been used two times I think. Might not be available when I get more money though, if I do.

Another option would be my Amazfit, if it’s the right one. But I don’t know where the charger is. Probably needs a new battery since it’s been sitting dead for years. Easier to buy the $40 watch. No idea how much a charger and battery for my Amazfit is. Also, don’t know how hard it is to open.

The $40 watch, says you can open it with a screwdriver I think, so replacing the battery on that is probably easy.

I’ll probably leave the Amazfit where it is, and never look at it. Maybe donate or recycle it. Or keep it just in case.

Domains can be bought privately

And so can web hosting, and servers. They don’t require any personal info, maybe an email address. But no name or anything like that. Don’t transfer a domain there, as that’s pointless. The old whois data can be found. And the old domain registrar might keep records, of who had the domain, so whois privacy won’t do any good. Better to let your domains expire. And get a new one. With only new content.

A truly private domain will cost more. But if you live in an authoritarian regime, it might be worth it.

I no longer recommend BuyVM or NameCrane, they both probably require personal info. They take cryptocurrency, but that doesn’t mean it’s private. Both were good back in the day though.

I’ll eventually cancel my hosting, and let my domains expire. The Crane hosting will be cancelled sooner then the reseller hosting.

You can find such hosts, and domain registrars, by searching. Perhaps use a private search engine. Perhaps Mullvad Leta is private enough. They have an onion. But not sure about Tor, if a bad actor controls enough nodes, and you only connect to their nodes, there goes your anonymity. Perhaps you can look at the node list, and research every IP. And prevent Tor from connecting to the bad IPs. Going offline is easier.

Nothing is stopping bad actors from signing up for private hosts using cryptocurrency, and hosting Tor nodes. So don’t ask me how you’ll know if the IP belongs to a bad actor. Obviously avoid all IPs in the US.

Goodbye Firefox

Apparently the latest version integrated some Google AI spyware, for image search or something. Couldn’t read the article Reddit linked to, it said 403. Can’t even access Reddit on my laptop usually.

The forks are probably safe, so I’ll keep using LibreWolf.

Guess Mozilla isn’t focused on privacy anymore, that’s too bad.

Well, it’s removed from my desktop and laptop. Need to remove from Steam Deck though. Mac mini will get wiped someday, so who cares, it’s turned off anyways.

I’ll assume it’s true.

Didn’t remove Firefox from my phone either, don’t even use it on there. And it’s getting wiped soon too.

Canada Bill C-2

A nice new surveillance law.

If you are thinking of fleeing the US or any country to Canada, and that passes, there’s no point. They probably won’t give you asylum if that passes.

Like giving your personal info away without them having a warrant? Well, that’s in there. Don’t like private electronic communication? That’s covered too.

I have no idea what country anyone should go to. Some country that has 0 corrupt people in power.

Maybe a poor country that has no internet or tech? Might die of a disease, but that’s better then getting arrested for freedom of speech, or filming ICE, or because they took your citizenship away.

Eventually, if things don’t get better in the US, women can die from being unable to get an abortion. And lots of diseases will come back as well, thanks to the idiot who is anti vaccine.

If ICE deports you, you may end up in prison, where you could be tortured and/or killed. Some people die in the inhumane ICE conditions as well.

imessage-exporter

imessage-exporter can be used to export messages from your iPhone, if you are switching to a more private phone. Switching to Android, wouldn’t be more private. Android based could be, but Linux or no phone would be the best. Also, they can track your location from cell towers.

Looks like it works, will need to make a newer backup when I get my new phone.

Also, your location, can be found from WiFi too, you can do it yourself with some Raspberry Pis, think you need three, in different locations. Using random MAC addresses, may help. But they’ll have somebody’s location. They may or may not know who it is.

Wired is always better.

Don’t use a Crane from NameCrane for Nextcloud

The time on the server appears to be wrong, which breaks two factor auth. Had to use a backup code to login to Nextcloud. Then I tried logging into DirectAdmin, to see if it was hacked or something, and I had to use a backup code to login to DirectAdmin too. Then I checked the messages, and says from my IP, that it failed to login with two factor code around 1 AM.

Well, I just deleted everything. Already paid the bill, which sucks. But I no longer trust them for anything that matters to me.

I won’t email support, I will cancel it eventually though.

I don’t think I can change my email address for my account either, not without asking them. Probably will want my ID or something to change it.

So I might need a new host someday anyways. But I’ll probably have no money then either, so it won’t matter.