I'm trying to get Halium running on the Nexus 7 2013 gsm variant "deb".
I've made a few steps already. Most notably: Plasma Mobile starts!
I'm keeping (and updating while I progress) the summary below, so that:
- I don't forget what steps I took
- Others can help to improve this
- Others can use this as inspiration for their ports
common porting errors
test and debug
fastboot -c "$(abootimg -i hybris-boot.img | sed -ne '/cmdline/s/. cmdline . //p' ) bootmode=debug" boot hybris-boot.img
ls -l out/target/product/deb/system.img
git clone https://github.com/Halium/halium-scripts
./halium-scripts/halium-install halium-rootfs-20170630-151006.tar.gz halium/out/target/product/deb/system.img
- The device should reboot and get to the point where it announces usb networking:
lsusb -vd 0fce: | grep -i serial
iSerial 3 GNU/Linux Device on usb0 10.15.19.82
- reboot into twrp recovery to set the root password
mount rootfs.img mnt/
chroot mnt /bin/bash
connect to it
- reboot the device and wait for usb networking to come up as above
- configure usb network on your desktop in a similar way as above for telnet, but now for ssh
sudo ip address add 10.15.19.1 dev enp0s20f0u7
sudo ip route add 10.15.19.82 dev enp0s20f0u7
echo 'export PATH=/usr/sbin:/sbin:$PATH' >> /root/.bashrc
nmcli d # no wlan0
echo 1 > /dev/wcnss_wlan
echo sta > /sys/module/wlan/parameters/fwpath
nmcli d # shows wlan0
nmcli dev wifi # list wifis
nmcli dev wifi connect <SOMEOPENWIFI>
# sudo nmcli device wifi connect <SOMEENCRYPTEDWIFI> password <PASSWORD>
ping -c 2 18.104.22.168
ping -c 2 debian.org
# install some missing packages
apt install openssh-client bash-completion command-not-found binutils nano
what doesn't work
test_audio nothing to hear
ACDB init open file failed
[ACDB Init]->File is not found on the system
[ACDB Init]->ACDB init success!
library "libcamera_compat_layer.so" not found
test_gps, honestly I don't know whether that output below constitutes success of failure ... since I can't recognise any coordinates, I think it failed. I've waited 5 minutes or so. There are more
*** tracking lines but no coordinates
*** setup signal handler
*** get gps interface
*** device info
id = gps
name = loc_api GPS Module
author = Qualcomm USA, Inc.
*** init gps interface
*** set capabilities
capability is 00000007
** Creating thread: 'Loc_hal_worker' (start=0xb69f23b5, arg=0x1d02080)
** After thread_create: 'Loc_hal_worker', error=0 (start=0xb69f23b5, arg=0x1d02080)
**** Thread wrapper start (start=0xb69f23b5, arg=0x1d02080) ****
*** setting positioning mode
*** start gps track
*** gps tracking started
library "libis_compat_layer.so" not found
scp bbb_sunflower_1080p_60fps_normal.mp4 email@example.com:
library "libmedia_compat_layer.so" not found
Finding NFC hardware module.
test_nfc: test_nfc.c:156: testNfc: Assertion `hwModule != NULL' failed.
Test application for video recording using the camera
Recording start with volume up button. And stops with volume down.
The result is stored to /root/test_video.avi
library "libcamera_compat_layer.so" not found
library "/system/lib/hw/sensors.oem.so" not found
libsensor_add_waiting_client adding cb 0
Hardware module ID: sensors
Hardware module Name: Qualcomm Sensors Module
Hardware module Author: Qualcomm Inc.
Hardware module API version: 0x1
Hardware HAL API version: 0x100
Poll device version: 0x1000001
API VERSION 0.1 (legacy): 0x1
API VERSION 0.1: 0x65537
API VERSION 1.0: 0x16777217
API VERSION 1.1: 0x16842753
API VERSION 1.2: 0x16908289
API VERSION 1.3: 0x16973825
API VERSION 1.4: 0x17039361
libsensor_add_waiting_client adding cb 1
Got 0 sensors
Cannot load driver (err -1)
test_vibrator , segfaults, but anyway the N7 doesn't have a haptic motor to vibrate
Tried the rootfs from here: http://cdimage.ubports.com/rootfs/ but it doesn't do too much for me:
- screen stays on the Google logo
- no usb iSerial messages
- no usb network interface seems to come up
- last_kmsg shows that systemd does take over http://paste.ubuntu.com/25419054/ however,
- it complains that "systemd: Failed to start LXC Android Config and Container Initialization."
- no adb interface comes up, even though in TWRP/chroot I see that
Plasma mobile rootfs
git clone https://github.com/bhush9/rootfs-builder bhush9-rootfs-builder
# follow the instructions in README to patch lb_chroot_live-packages
# install it
The reboot takes about a minute. Then you'll hear an audible greeting and afterwards you are greeted by the plasma mobile login screen. You can login and play around a bit. Not much to do though. No network connection and it's not possible to ssh in.
Reboot back into TWRP and chroot.
- To be able to use the ssh server, you need to generate ssh server keys:
- Preferably enable password less login :
adb shell mkdir /home/phablet/.ssh
adb push ~/.ssh/id.pub /home/phablet/.ssh/authorized_keys
// todo : some chmod/chown needed?
- reboot, setup usbnet and then reboot and login as
- Alternatively, you can set the passwords, but I don't do this because it seems to actually break the graphical login:
passwd: Authentication token manipulation error
passwd: password unchanged
# fix passwd
apt remove libnss-extrausers
# select everything but extrausers
passwd # set root password
passwd phablet # set user password
Haven't tried yet.
Haven't tried yet. I'm not very familiar with arch.
- Get ubports to run
- Get PM to run on halium-boot
- Check out LuneOS
- Check out SailfishOS
- Build a .zip file, only makes sense if some OS is remotely usable, PM is close but still not there
- get lxc-attach to work
- patch out the noise dmesg logging of the battery
Any tips or feedback appreciated!