Skip to content

Instantly share code, notes, and snippets.

@veritas06
Last active July 2, 2024 09:42
Show Gist options
  • Save veritas06/462844437bd8c5751b85d99c78c68fd8 to your computer and use it in GitHub Desktop.
Save veritas06/462844437bd8c5751b85d99c78c68fd8 to your computer and use it in GitHub Desktop.
Instructions to get stock Android or LineageOS21 on the Rabbit r1 (July 2024)

Android on Rabbit r1

July 01, 2024

System Backup

  • Before making any changes, make sure you backup your stock partitions with MTKClient
    • ./mtk rl --skip userdata "path/to/backup"
    • Based on your setup & OS, you may need to include python3 in front: python3 ./mtk rl --skip userdata "path/to/backup"

Stock Android on Rabbit r1

  • I am putting this together as a small guide for users trying to get stock Android (or LineageOS) running on the Rabbit r1.
  • Start here: GitHub: RabbitHoleEscapeR1 / r1_escape
  • Adjust screen resolution: adb shell wm density 180
  • Details on the stepper motor for the camera:

retr0id — 05/29/2024 1:49 PM This is the stepper motor driver they use (datasheet) https://www.relmon.com/en/index.php/welcome/download/378.html

  • Rotating the camera:

Guinea pig with sunglasses — Yesterday at 3:51 PM run these commands in tasker or something and bind it to a quick settings button:

front: echo 0 > /sys/devices/platform/step_motor_ms35774/orientation

back: echo 180 > /sys/devices/platform/step_motor_ms35774/orientation

down: echo 90 > /sys/devices/platform/step_motor_ms35774/orientation (requires root)

  • You may want to use something like Tasker with the above commands so you don't need to type them out or be near a computer to move the camera.
  • Useful information, so you don't need to type everything out: StackOverflow: ADB Shell Input Events
usage: input [text|keyevent]
  input text <string>
  input keyevent <event_code>
    • Some possible values for event_code are:
0 -->  "KEYCODE_UNKNOWN" 
1 -->  "KEYCODE_MENU" 
2 -->  "KEYCODE_SOFT_RIGHT" 
3 -->  "KEYCODE_HOME" 
4 -->  "KEYCODE_BACK" 
5 -->  "KEYCODE_CALL" 
6 -->  "KEYCODE_ENDCALL" 
7 -->  "KEYCODE_0" 
8 -->  "KEYCODE_1" 
9 -->  "KEYCODE_2" 
10 -->  "KEYCODE_3" 
11 -->  "KEYCODE_4" 
12 -->  "KEYCODE_5" 
13 -->  "KEYCODE_6" 
14 -->  "KEYCODE_7" 
15 -->  "KEYCODE_8" 
16 -->  "KEYCODE_9" 
17 -->  "KEYCODE_STAR" 
18 -->  "KEYCODE_POUND" 
19 -->  "KEYCODE_DPAD_UP" 
20 -->  "KEYCODE_DPAD_DOWN" 
21 -->  "KEYCODE_DPAD_LEFT" 
22 -->  "KEYCODE_DPAD_RIGHT" 
23 -->  "KEYCODE_DPAD_CENTER" 
24 -->  "KEYCODE_VOLUME_UP" 
25 -->  "KEYCODE_VOLUME_DOWN" 
26 -->  "KEYCODE_POWER" 
27 -->  "KEYCODE_CAMERA" 
28 -->  "KEYCODE_CLEAR" 
29 -->  "KEYCODE_A" 
30 -->  "KEYCODE_B" 
31 -->  "KEYCODE_C" 
32 -->  "KEYCODE_D" 
33 -->  "KEYCODE_E" 
34 -->  "KEYCODE_F" 
35 -->  "KEYCODE_G" 
36 -->  "KEYCODE_H" 
37 -->  "KEYCODE_I" 
38 -->  "KEYCODE_J" 
39 -->  "KEYCODE_K" 
40 -->  "KEYCODE_L" 
41 -->  "KEYCODE_M" 
42 -->  "KEYCODE_N" 
43 -->  "KEYCODE_O" 
44 -->  "KEYCODE_P" 
45 -->  "KEYCODE_Q" 
46 -->  "KEYCODE_R" 
47 -->  "KEYCODE_S" 
48 -->  "KEYCODE_T" 
49 -->  "KEYCODE_U" 
50 -->  "KEYCODE_V" 
51 -->  "KEYCODE_W" 
52 -->  "KEYCODE_X" 
53 -->  "KEYCODE_Y" 
54 -->  "KEYCODE_Z" 
55 -->  "KEYCODE_COMMA" 
56 -->  "KEYCODE_PERIOD" 
57 -->  "KEYCODE_ALT_LEFT" 
58 -->  "KEYCODE_ALT_RIGHT" 
59 -->  "KEYCODE_SHIFT_LEFT" 
60 -->  "KEYCODE_SHIFT_RIGHT" 
61 -->  "KEYCODE_TAB" 
62 -->  "KEYCODE_SPACE" 
63 -->  "KEYCODE_SYM" 
64 -->  "KEYCODE_EXPLORER" 
65 -->  "KEYCODE_ENVELOPE" 
66 -->  "KEYCODE_ENTER" 
67 -->  "KEYCODE_DEL" 
68 -->  "KEYCODE_GRAVE" 
69 -->  "KEYCODE_MINUS" 
70 -->  "KEYCODE_EQUALS" 
71 -->  "KEYCODE_LEFT_BRACKET" 
72 -->  "KEYCODE_RIGHT_BRACKET" 
73 -->  "KEYCODE_BACKSLASH" 
74 -->  "KEYCODE_SEMICOLON" 
75 -->  "KEYCODE_APOSTROPHE" 
76 -->  "KEYCODE_SLASH" 
77 -->  "KEYCODE_AT" 
78 -->  "KEYCODE_NUM" 
79 -->  "KEYCODE_HEADSETHOOK" 
80 -->  "KEYCODE_FOCUS" 
81 -->  "KEYCODE_PLUS" 
82 -->  "KEYCODE_MENU" 
83 -->  "KEYCODE_NOTIFICATION" 
84 -->  "KEYCODE_SEARCH" 
85 -->  "TAG_LAST_KEYCODE"
adb root
adb shell 'sqlite3 /data/*/*/*/gservices.db \
    "select * from main where name = \"android_id\";"'

LineageOS on Rabbit r1

  • Download a GSI image from here: Andy Yan's personal builds // GSI
    • I used: lineage-21.0-20240525-UNOFFICIAL-arm64_bgN.img.xz
  • These are the commands I ran to get Lineage on my r1:
    • ** THIS WILL WIPE YOUR LOCAL STORAGE **
unxz lineage-21.0-20240525-UNOFFICIAL-arm64_bgN.img.xz
cp lineage-21.0-20240526-UNOFFICIAL-arm64_bgN.img ~/Development/r1_escape
adb reboot bootloader
fastboot devices
fastboot -w
fastboot flash --disable-verity --disable-verification vbmeta vbmeta.img
fastboot flash system lineage-21.0-20240526-UNOFFICIAL-arm64_bgN.img
fastboot reboot-fastboot
fastboot flash system lineage-21.0-20240526-UNOFFICIAL-arm64_bgN.img
fastboot reboot
  • For LineageOS: Trebuchet seems to repeatedly crash when trying to launch. I manually loaded the AIO Launcher APK to get around that.
  • Word of warning... it does take a bit for LineageOS to boot the first time. Let it sit for ~15 minutes before trying to reflash, go to stock Android, or restore the default "rabbitOS".

Working Launchers

  • LineageOS' default launcher (Trebuchet) will repeatedly crash, so you'll need to load a new one. Below are some that users have confirmed are working:
    • AIO Launcher
    • Niagara
    • Pro Launcher
    • Nova Launcher does not work.

Rooting with Magisk

  • You will need to get the boot image from the device so it can be patched with Magisk. You can get that through the following commands:
adb root
adb shell
dd if=/dev/block/by-name/boot_a of=/sdcard/stock_boot.img
    • After installing Magisk, you can open it, & select the boot image you saved previously from the /sdcard/, & have it be patched with Magisk.
    • The resulting file will be in your /sdcard/Downloads/ folder. You'll want to pull that onto your computer (adb pull /sdcard/Downloads/$magiskBootImage -- fix the filename at the end)
    • adb reboot bootloader where you should then be able to flash the Magisk boot image via fastboot flash boot $magiskBootImage
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment