[DEV][ROM][UNOFFICIAL] LineageOS 18.1 (Android 11) for Raspberry Pi 4 B - Raspberry Pi Original Development

Here’s my build of LineageOS 18.1 for Raspberry Pi 4 Model B, Pi 400, and Compute Module 4. It is unofficial and unsupported by the LineageOS team. It’s for advanced users only. Pi 4 model with at least 2GB of RAM is required to run this build.
Important! This image includes parts that are licensed under non-commercial license (Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International). You may use this build freely in personal/educational/etc use. Commercial use is not allowed with this build! You can contact me by email to discuss creating customized Android builds for commercial purposes.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
LineageOS 18.1 (Android 11)
for Raspberry Pi 4
konstakang.com
There is also Android TV version available.
LineageOS 18.1 Android TV (Android 11)
for Raspberry Pi 4
konstakang.com
Working:
Audio (HDMI, 3.5mm jack, USB microphones, bluetooth speakers/headphones, etc)
Audio DAC (using GPIO DACs e.g. Hifiberry DAC+)
Bluetooth (and bluetooth tethering)
Camera (using official Pi camera modules & UVC USB webcams)
GPIO
GPS (using external USB modules e.g. U-Blox 7)
Ethernet
Hardware accelerated graphics (V3D, OpenGL & Vulkan)
HDMI display (and HDMI-CEC)
I2C
IR remotes (using external GPIO IR modules e.g. TSOP4838)
RTC (using external GPIO I2C modules e.g. DS3231)
Sensors (using external GPIO I2C modules e.g. MPU6050, LSM6DS3, LSM303DLHC, BME280/BMP280, and APDS9930 accelerometer, gyroscope, magnetometer, temperature, pressure, humidity, ambient light, and proximity)
Serial console (using external GPIO serial console adapters e.g. PL2303)
SPI
Touchscreen/multi-touch (USB touchscreens, Waveshare SPI touchscreens)
USB (mouse, keyboard, storage, etc)
USB-C (ADB, MTP, PTP, USB tethering)
Wifi (and wifi tethering)
Not working:
Hardware video decoding & encoding (software decoding & encoding works)
Issues:
Stock camera app is not working - many third party camera apps seem to work
SELinux is in permissive mode
and more…
Sources:
kernel
Thanks:
Peter Yoon and android-rpi project
Roman Stratiienko and GloDroid project
AOSP reference board developers (dragonboard, hikey, yukawa)
E. Anholt for V3D graphics driver
Maxime Ripard for Pi 4 KMS driver
Android-x86 project
LineageOS team and everyone who has contributed to LineageOS 18.1

How to install:
Follow the official Raspberry Pi instructions for writing the image to the SD card.
If you’re running a recent build (20220121 or newer) you can also update to newer builds using TWRP flashable OTA packages. OTA updates pushed through the built-in Updater app are stored at /data/lineageos_updates/.
Download lineage-18.1-xxxxxxxx-UNOFFICIAL-KonstaKANG-rpi4-ota.zip and save it to your device’s internal storage or use an external USB drive
Boot to TWRP recovery (see FAQ)
Install lineage-18.1-xxxxxxxx-UNOFFICIAL-KonstaKANG-rpi4-ota.zip from your selected storage
(Flash Magisk/other add-ons you had previously installed)
Boot out of recovery (see FAQ)
Changes that are backed up and restored flashing OTAs:
Device specific settings changed using Settings -> System -> Raspberry Pi settings
Manual changes to /boot/resolution.txt and /boot/rc_keymap.txt
USB boot configuration in /boot/config.txt
GApps
Changes that are not backed up and restored flashing OTAs:
Manual changes to /boot/config.txt (and any other manual changes to /boot partition)
Magisk
FAQ:
FAQ is getting quite long and difficult to maintain in several different places. You can find the always up-to-date FAQs here:
https://konstakang.com/devices/rpi4/LineageOS18/
https://konstakang.com/devices/rpi4/LineageOS18-ATV/

Merged commits not mentioned in the changelog.
12.5. changelog:
also available as OTA package
add support for Compute Module 4
fix DAC audio device selection on CM4 & Pi 400 that don’t have 3.5mm audio jack
fix USB storage (Pi 400 as well?)
add support for the RTC on the I/O board
use OTG mode for USB to support ADB, MTP, PTP, USB tethering on the micro-USB port on the I/O board
update boot firmware for newer Pi 4 hardware revisions
various drm_hwcomposer updates e.g. support for headless mode (thanks to Roman Stratiienko)
automatically set density based on display resolution
add support for APDS9930 ambient light/proximity sensor
update to TWRP 3.6.1_11-1-KonstaKANG
update to Mesa 21.3.8
update to Linux 5.4.191 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 May 2022 (merged)
21.1. 2022 changelog:
fix reboots related to Hotspot 2.0 networks/ANQP requests (see issue #6)
Vulkan 1.1 (thanks to people at Igalia for Vulkan 1.1 conformance and Roman Stratiienko for latest Mesa fixes)
add new options to Raspberry Pi settings (force rotation & CPU governor)
prepare for OTAs
update to TWRP 3.6.0_11-1-KonstaKANG
update to Mesa 21.3.4
update to Linux 5.4.173 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 January 2022 (merged)
23.11. changelog:
add support for BME280/BMP280 temperature/pressure/humidity sensors
add option to select HDMI-CEC device
add option to show virtual volume down, volume up, and power keys on navigation bar
add option for old TCP-based ADB over network
show IP address and port for ADB/SSH/VNC options
fix resizing data partition that broke with previous build
update to TWRP 3.6.0_11-0-KonstaKANG
update to Mesa 21.3.0
update to Linux 5.4.161 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 November 2021 (merged)
26.10. changelog:
switch to 64-bit kernel & userspace
switch to minigbm gbm_mesa and [email protected] API (thanks to Roman Stratiienko)
update to Mesa 21.2.4
update to Linux 5.4.155 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
11.10. changelog:
add support for Vulkan
rework bluetooth (thanks to android-rpi)
update to Mesa 21.1.8
update to Linux 5.4.152 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 1 October 2021 (merged)
20.7. changelog:
switch to using HDMI-CEC HAL
update to Mesa 21.1.5
update to Linux 5.4.132 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 July 2021 (merged)
11.4. changelog:
add initial support for HDMI-CEC
add built-in VNC server
update to Mesa 21.0.2
update to Linux 5.4.111 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 April 2021 (merged)
14.2. changelog:
add support for LSM303DLHC accelerometer & magnetometer sensor
add separate TWRP flashable su add-on (see FAQ)
allow switching display off with power button
add support for USB-C (ADB, MTP, PTP, USB-tethering)
enable bluetooth tethering
add settings option for mouse back button feature
update to TWRP 3.5.0_9-0-KonstaKANG
update to Mesa 20.3.4
update to Linux 5.4.98 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 February 2021 (merged)
4.1. changelog:
initial LineageOS 18.1 build
add support for sensors (LSM6DS3 & MPU6050 accelerometer & gyroscope on I2C)
add support for more serial USB GPS devices
drop support for SwiftShader software renderer which also means dropping support for the official 7” touchscreen for now
update to Mesa 20.3.2
add option to switch between gbm and minigbm gralloc
update to TWRP 3.4.0-2
update to Linux 5.4.86 kernel and patch known vulnerabilities (CVE-xxxx-xxxx, and more)
Android security patch level: 5 December 2020 (merged)
Previous builds:
AndroidFileHost

Will you share an atv variation 18.1?
Thanks for your hard work.

onukomer said:
Will you share an atv variation 18.1?
Thanks for your hard work.
Click to expand...
Click to collapse
What does Android TV 11 offer that is not already available in the latest Android TV builds for the Pi 4 (https://konstakang.com/devices/rpi4/LineageOS17.1-ATV/)? Yeah, I know - big version number, much WOW! But besides that, what's the point?
From user perspective I highly doubt you're going have the slightest clue whether you're running Android TV based on Android 8, 9, 10, or 11 unless you go specifically into the about device settings. Android TV builds are also pretty much useless without installing Google Apps. There's currently hardly any working Android 11 gapps packages available and there's certainly no Android TV gapps for Android 11.
From technical perspective I'm currently not aware of any reason why Android TV 11 builds wouldn't work just as much as before but there's just not going to be much reason for it in a long long time.

KonstaT said:
Here’s my build of LineageOS 18.1 for Raspberry Pi 4 Model B, Pi 400, and Compute Module 4. It is unofficial and unsupported by the LineageOS team. It’s for advanced users only. Pi 4 model with at least 2GB of RAM is required to run this build.
Important! This image includes parts that are licensed under non-commercial license (Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International). You may use this build freely in personal/educational/etc use. Commercial use is not allowed with this build!
https://konstakang.com/devices/rpi4/LineageOS18/
lineage-18.1-20210104-UNOFFICIAL-KonstaKANG-rpi4.zip
https://www.androidfilehost.com/?fid=17248734326145708986
md5:4775eb4b2a89859ebf4d16dbf306cea2
Working:
Audio (HDMI, 3.5mm jack, USB microphones, bluetooth speakers/headsets, etc)
Audio DAC (using GPIO DACs e.g. Hifiberry DAC+)
Bluetooth
Camera (using official Pi camera modules & UVC USB webcams)
GPIO
GPS (using external USB modules e.g. U-Blox 7)
Ethernet
Hardware accelerated graphics (V3D)
HDMI display
I2C
IR remotes (using external GPIO IR modules e.g. TSOP4838)
RTC (using external GPIO I2C modules e.g. DS3231)
Sensors (using external GPIO I2C modules e.g. LSM6DS3 & MPU6050 accelerometer & gyroscope)
Serial console (using external GPIO serial console adapters e.g. PL2303)
SPI
Touchscreen/multi-touch (USB touchscreens, Waveshare SPI touchscreens)
USB (mouse, keyboard, storage, etc)
Wifi
Wifi tethering
Not working:
Hardware video decoding & encoding (software decoding & encoding works)
Issues:
Stock camera app is not working - many third party camera apps seem to work
SELinux is in permissive mode
and more…
Sources:
kernel
Thanks:
Peter Yoon and everyone who has contributed to android-rpi
Roman Stratiienko and GloDroid project for graphics fixes
brobwind for bluetooth fixes
Eric Anholt for V3D graphics driver
Maxime Ripard for Pi 4 KMS driver
Android-x86 project
LineageOS team & everyone who has contributed to LineageOS 18.1
Click to expand...
Click to collapse
BITGAPPS ARM Android 11
BiTGApps-arm-11.0.0-R19_signed.zip
drive.google.com
Its portability is incredible, everything works fine, but the only problem I'm having is that version 17 and 18 doesn't work with the mouse in the GeForceNow application, the right button just doesn't work. I tested the OMNI Android 11 version and it works perfectly, however it is full of bugs and poorly optimized. Can you fix this for us? Having a Raspberry PI 4 that works GeForce Now is incredibly awesome!
Another suggestion is how to disable the physical keyboard shortcut keys like F1-F5, because when we try to play on GeForce Now they simply close the application, at least give a function to remap the buttons.

dhtm15 said:
Its portability is incredible, everything works fine, but the only problem I'm having is that version 17 and 18 doesn't work with the mouse in the GeForceNow application, the right button just doesn't work. I tested the OMNI Android 11 version and it works perfectly, however it is full of bugs and poorly optimized. Can you fix this for us? Having a Raspberry PI 4 that works GeForce Now is incredibly awesome!
Another suggestion is how to disable the physical keyboard shortcut keys like F1-F5, because when we try to play on GeForce Now they simply close the application, at least give a function to remap the buttons.
Click to expand...
Click to collapse
If it helps md5sum for BiTGApps-arm-11.0.0-R19_signed.zip I've used to test is 299182a2d72b977a04360439ed06db8a. It's of course entirely your decision if you trust a download source you can find. You can find more mirrors e.g. in the BiTGApps XDA thread (https://forum.xda-developers.com/t/custom-gapps-bitgapps-for-android.4012165/).
My recent builds map right mouse button to back key. Are you saying that there's Android apps that actually make a difference between left/right mouse clicks? I could add a setting option for that feature in future releases (that's actually already been on my endless list of TODOs).
You can revert to the default keyboard mappings by removing /vendor/usr/keylayout/Generic.kl (or edit that file to change the keymappings to whatever you want).

KonstaT said:
If it helps md5sum for BiTGApps-arm-11.0.0-R19_signed.zip I've used to test is 299182a2d72b977a04360439ed06db8a. It's of course entirely your decision if you trust a download source you can find. You can find more mirrors e.g. in the BiTGApps XDA thread (https://forum.xda-developers.com/t/custom-gapps-bitgapps-for-android.4012165/).
My recent builds map right mouse button to back key. Are you saying that there's Android apps that actually make a difference between left/right mouse clicks? I could add a setting option for that feature in future releases (that's actually already been on my endless list of TODOs).
You can revert to the default keyboard mappings by removing /vendor/usr/keylayout/Generic.kl (or edit that file to change the keymappings to whatever you want).
Click to expand...
Click to collapse
I think I saw something related to this, that the function of the right mouse button when programmed to return can affect applications that use the right button, this is the case with GeForce Now, which does not recognize the right mouse button in any way, all other buttons are functional. I also tried to see how to remap the keyboard buttons and tried to change these files by adding another one, but it didn't solve the problem, I opened it to edit and I didn't find the F1 function until F5, can you show me where exactly i can edit to remove this?
I found this GApps on the 4PDA forum, I think it's safe because it was a topic dedicated to that.
edit: Correction, I had entered the / root / system / usr / keylayout folder so I hadn't seen the changes.

dhtm15 said:
I think I saw something related to this, that the function of the right mouse button when programmed to return can affect applications that use the right button, this is the case with GeForce Now, which does not recognize the right mouse button in any way, all other buttons are functional. I also tried to see how to remap the keyboard buttons and tried to change these files by adding another one, but it didn't solve the problem, I opened it to edit and I didn't find the F1 function until F5, can you show me where exactly i can edit to remove this?
I found this GApps on the 4PDA forum, I think it's safe because it was a topic dedicated to that.
edit: Correction, I had entered the / root / system / usr / keylayout folder so I hadn't seen the changes.
Click to expand...
Click to collapse
Yeah, I checked the md5sum and it's the same what I have for the file I downloaded about a month ago.
I uploaded a TWRP flashable patch that will restore the default mouse button behavior and adds an option to Settings -> System -> Advanced settings to enable back key on right mouse click.
Edit. removed, not needed with latest builds anymore.
Deleting custom Generic.kl from vendor partition will use the default unmodified one from system partition. These are the changes that have been made https://github.com/lineage-rpi/andr...001-rpi3-modify-generic-keyboard-layout.patch

Hello, I try to use this great rom (and others) since 3 days with my PI4 , and "Location" (with waze and maps) never works instead of version 17.
Someone knows why ?
Thank you

Enable root access, was a switch under developer options in 17.1 nowhere to be found in 18.1. Tried flashing a SU from TWRP, nothing shows up. Am I missing something here?

myspac said:
Hello, I try to use this great rom (and others) since 3 days with my PI4 , and "Location" (with waze and maps) never works instead of version 17.
Someone knows why ?
Thank you
Click to expand...
Click to collapse
You would need to be a bit more specific. Are you using actual GPS hardware or do mean e.g. Google network location (which depends on gapps being installed)?
williamparker said:
Enable root access, was a switch under developer options in 17.1 nowhere to be found in 18.1. Tried flashing a SU from TWRP, nothing shows up. Am I missing something here?
Click to expand...
Click to collapse
Please read the FAQ on how to have root access. It's still under consideration if I'm going to bring back built-in su because there's no specific need for it anymore.

Thank you for your answers !
KonstaT said:
You would need to be a bit more specific. Are you using actual GPS hardware or do mean e.g. Google network location (which depends on gapps being installed)?
Click to expand...
Click to collapse
Oh.. yes, I mean Google network location; so , the problem is on gapps: Ok, thank you. I use : open_gapps-arm-11.0-nano-20210104-UNOFFICIAL_TEST.zip, it was ok with open_gapps-arm-10.0-pico-20201223.zip and your "17 version". I m trying other rom (OMNI) with other gapps and I had the same specific problem: that's why I think it was a "18 rom" 's problem...
KonstaT said:
Please read the FAQ on how to have root access. It's still under consideration if I'm going to bring back built-in su because there's no specific need for it anymore.
Click to expand...
Click to collapse
I have and need root access, but it was ok with the FAQ.

Hello,
In Linphone, Bria, ... I can't use my USB microphone (no recorded sound), but it works well in a voice recorder application.
It is also not possible to choose a ringtone.
Do you have an idea about the microphone problem?
Thank you for your work

KonstaT said:
You would need to be a bit more specific. Are you using actual GPS hardware or do mean e.g. Google network location (which depends on gapps being installed)?
Please read the FAQ on how to have root access. It's still under consideration if I'm going to bring back built-in su because there's no specific need for it anymore.
Click to expand...
Click to collapse
Ok, this is my last tests, all without gapps:
- I take your last rom
- connect an hardware gps by bluetooth
- install by adb the app "GPS Bluetooth" to mock the location
- install waze (by adb)
- install maps (by adb)
After:
- MAPs works
- WAZE: my location is ok but the map is not displayed: I didn't know why (if works with your rom 17).
I took an old waze version: and after re set all permission in the app setting AND by Privacy menu (not same permission when I cick on All permission of waze!!!! ???) => it was Ok too, location and map.
I re take last Waze version, but I never success to display map.
In data/wifi usage of the waze app: 0 ko !!!!
I don't understand why some applications (Android Auto too) can't access to network and why permissions are not the same by app's info and by Privacy setting menu. (It was ok with version 17 of your rom).

KonstaT said:
Here’s my build of LineageOS 18.1 for Raspberry Pi 4 Model B, ageOS team & everyone who has contributed to LineageOS 18.1
Click to expand...
Click to collapse
awesome work! i was reading your work and i have a question if you or anyone can chirp in too for ideas.
whats the benefit besides privacy using your build of lineage over raspberrys os?
if it were used offline as storage, but wake on lan when needing access using nextcloud or people recommend nextcloud alternative? also emails nextcloud isnt e2ee, but Tutanota is but i dont think its capable running on nextcloud.
some personal some work so transfering to devices its main purpose is security. maybe running a work chat system e2ee which will also be safer than online apps out there.
TLR: dont want to pay for storage cloud, messaging services online for work when we can do it ourselves and overall safer from uninvited guests

Thanks for this ROM! I understand a lot of stuff here is still experimental, but I look forward to trying this out. I will be getting a 5-inch touch screen next week sometime so I also plan to test performance with it (it's only 800x480, so not driving millions of pixels with the Pi either.) If I had to estimate, the Pi 4 is about as fast as a Galaxy S5 or S6 was, slightly slower than a snapdragon 820. So it's not midrange or high-end, but I think it is more in the upper parts of the low range in terms of raw performance. You can safely boost the clock to 2.2 gHZ, which works well provided you have the thermal cooling to do it without a throttle. I also use a Pi 400. The Pi 400 runs a lot cooler even at the default 1.8, and I have safely pushed it to 2.2. It makes it slightly faster but not a major boost in Android by any means.
If others have had experience getting the USB Type C working on this rom, let me know. I understand it's commented in config.txt, so I plan to uncomment it there and look in /vendor/etc/init/hw/init.rpi4.rc to change it also with my Ubuntu machine. I'm fully blind, so using ADB on this to get talkback working is essential. So far I have used the network boot to do this, installed both an APK for Google TTS and Talkback, got it working just fine after adding values to securesettings. Great news. At least for now, new users wanting ADB access should connect their Pi through ethernet and then connect to ADB over the network, I think this is easiest. I have a USB type C hub here which is powered so I'm able to hook the Pi directly to my computer and do it that way a bit easier than fiddling around in the router for this stuff, and maybe more secure as it is only over USB. But the network way is probably easier for more folks to get going as well. Ups and downs, just as everything to life, right?
I also am wondering if we can get USB ADB over TWRP. This would be a huge win but I will test this and report back on this thread. Again, my only choice is to use openrecovery scripts, not really to find a sighted pair of eyes and ask them to help out reading the TWRP screens. I actually don't have that help available at the moment as my partner and I are both blind. So everything I get to do I have to do in a commandline or speaking way. But I think even despite those odds, this is doable and the disabled need to push ahead in this space anyway if they too want to be tinkerers as it is.
Thanks for working on this and making Lineage accessible to many. It's been yours and other Pi community hardware enthusiasts' effort which got this up and running. I was actually able to get one of the Pi3 builds you posted running with Talkback but at the time I just didn't find the Pi 3 that good for running Android. Certainly not with 1 gig of ram, something the Pi 4 gives us a lot of choice with at least.

Micka41 said:
Hello,
In Linphone, Bria, ... I can't use my USB microphone (no recorded sound), but it works well in a voice recorder application.
It is also not possible to choose a ringtone.
Do you have an idea about the microphone problem?
Thank you for your work
Click to expand...
Click to collapse
It's still very early days for Android 11. Many apps have not yet been updated to support new features it brings. There still could be issues with integration in upstream LineageOS as well (builds are not yet rolling out for officially supported devices so I'm not sure it can be considered feature ready). Gapps are really not ready for Android 11 yet.
There are options that are more feature ready and more thoroughly tested if you're not only after the Android version number.
myspac said:
Ok, this is my last tests, all without gapps:
- I take your last rom
- connect an hardware gps by bluetooth
- install by adb the app "GPS Bluetooth" to mock the location
- install waze (by adb)
- install maps (by adb)
After:
- MAPs works
- WAZE: my location is ok but the map is not displayed: I didn't know why (if works with your rom 17).
I took an old waze version: and after re set all permission in the app setting AND by Privacy menu (not same permission when I cick on All permission of waze!!!! ???) => it was Ok too, location and map.
I re take last Waze version, but I never success to display map.
In data/wifi usage of the waze app: 0 ko !!!!
I don't understand why some applications (Android Auto too) can't access to network and why permissions are not the same by app's info and by Privacy setting menu. (It was ok with version 17 of your rom).
Click to expand...
Click to collapse
It's still very early days for Android 11. Many apps have not yet been updated to support new features it brings. There still could be issues with integration in upstream LineageOS as well (builds are not yet rolling out for officially supported devices so I'm not sure it can be considered feature ready). Gapps are really not ready for Android 11 yet.
There are options that are more feature ready and more thoroughly tested if you're not only after the Android version number.
entwicklun said:
awesome work! i was reading your work and i have a question if you or anyone can chirp in too for ideas.
whats the benefit besides privacy using your build of lineage over raspberrys os?
Click to expand...
Click to collapse
I guess the main benefit is that it's a completely different operating system. It's Android - it runs Android applications.
htc_Tomi said:
Thanks for this ROM! I understand a lot of stuff here is still experimental, but I look forward to trying this out. I will be getting a 5-inch touch screen next week sometime so I also plan to test performance with it (it's only 800x480, so not driving millions of pixels with the Pi either.) If I had to estimate, the Pi 4 is about as fast as a Galaxy S5 or S6 was, slightly slower than a snapdragon 820. So it's not midrange or high-end, but I think it is more in the upper parts of the low range in terms of raw performance. You can safely boost the clock to 2.2 gHZ, which works well provided you have the thermal cooling to do it without a throttle. I also use a Pi 400. The Pi 400 runs a lot cooler even at the default 1.8, and I have safely pushed it to 2.2. It makes it slightly faster but not a major boost in Android by any means.
If others have had experience getting the USB Type C working on this rom, let me know. I understand it's commented in config.txt, so I plan to uncomment it there and look in /vendor/etc/init/hw/init.rpi4.rc to change it also with my Ubuntu machine. I'm fully blind, so using ADB on this to get talkback working is essential. So far I have used the network boot to do this, installed both an APK for Google TTS and Talkback, got it working just fine after adding values to securesettings. Great news. At least for now, new users wanting ADB access should connect their Pi through ethernet and then connect to ADB over the network, I think this is easiest. I have a USB type C hub here which is powered so I'm able to hook the Pi directly to my computer and do it that way a bit easier than fiddling around in the router for this stuff, and maybe more secure as it is only over USB. But the network way is probably easier for more folks to get going as well. Ups and downs, just as everything to life, right?
I also am wondering if we can get USB ADB over TWRP. This would be a huge win but I will test this and report back on this thread. Again, my only choice is to use openrecovery scripts, not really to find a sighted pair of eyes and ask them to help out reading the TWRP screens. I actually don't have that help available at the moment as my partner and I are both blind. So everything I get to do I have to do in a commandline or speaking way. But I think even despite those odds, this is doable and the disabled need to push ahead in this space anyway if they too want to be tinkerers as it is.
Thanks for working on this and making Lineage accessible to many. It's been yours and other Pi community hardware enthusiasts' effort which got this up and running. I was actually able to get one of the Pi3 builds you posted running with Talkback but at the time I just didn't find the Pi 3 that good for running Android. Certainly not with 1 gig of ram, something the Pi 4 gives us a lot of choice with at least.
Click to expand...
Click to collapse
If you/anyone wants to test ADB over USB-C there's two lines you need to uncomment for testing (both LineageOS 17 & 18 should be OK for this).
One line /boot/config.txt under 'USB-C' section:
dtoverlay=dwc2,dr_mode=peripheral
Another one in /vendor/etc/init/hw/init.rpi4.rc:
import /vendor/etc/init/hw/init.rpi4.usb.rc
I don't have any hardware that would provide enough power for the Pi to test this myself. If anyone has recommendations on powered USB-C hubs that are known to work on the Pi 4 for this purpose I'd appreciate that.
My TWRP builds don't support ADB. This is because TWRP has no network support (wifi/ethernet) and I can't test the USB-C for the above reason.

KonstaT said:
If you/anyone wants to test ADB over USB-C there's two lines you need to uncomment for testing (both LineageOS 17 & 18 should be OK for this).
One line /boot/config.txt under 'USB-C' section:
dtoverlay=dwc2,dr_mode=peripheral
Another one in /vendor/etc/init/hw/init.rpi4.rc:
import /vendor/etc/init/hw/init.rpi4.usb.rc
I don't have any hardware that would provide enough power for the Pi to test this myself. If anyone has recommendations on powered USB-C hubs that are known to work on the Pi 4 for this purpose I'd appreciate that.
My TWRP builds don't support ADB. This is because TWRP has no network support (wifi/ethernet) and I can't test the USB-C for the above reason.
Click to expand...
Click to collapse
I can definitely say that uncommenting those lines did get me ADB over the USB type C port. So it does work in this mode successfully. I could then do adb root and at least have some access similar to TWRP minus the flashing and back-ups.
I think the problem with some powered hubs could be the power delivery. I'm not sure if you have a type-C port already on your machine, but it may provide the full 10 GBPS/3A requirement if it's a direct type C port. The 3.0/3.1 gen1 hubs only provide 1.5A of power and 5 GBps, so while the Pi could run on it, you couldn't power any attached devices and would get the reduced lightningbolt symbol performance as well. The powered hubs have dedicated charging ports, but these wire directly to the hub and not the machine, so while providing more power at a cost.
I also tried installing Gapps (BitGapps) for Android 11 but it failed once I signed in with a Google account. Oh well. 32-bit Gapps are also harder to come by anyway. For now I can always sideload apk files which don't rely on the play stuff and use Chrome for browsing. That's a good start.
The reason I need Android 11 is mostly for accessibility. Unlike for sighted folks where lower Android versions don't make an impact on how and what you can use, for the blind, each Android version introduces changes to the accessibility API. This is important as these changes can allow for things like brand new touch gestures (completely different gestures/ swipes and touches in Android 11 with Talkback ) to actual improvements on what the screen reader "sees" in the UI. So no, I'm not doing this to just have the version number myself, but to benefit from the latest changes to Android's accessibility API. I hope this makes sense.

htc_Tomi said:
I can definitely say that uncommenting those lines did get me ADB over the USB type C port. So it does work in this mode successfully. I could then do adb root and at least have some access similar to TWRP minus the flashing and back-ups.
I think the problem with some powered hubs could be the power delivery. I'm not sure if you have a type-C port already on your machine, but it may provide the full 10 GBPS/3A requirement if it's a direct type C port. The 3.0/3.1 gen1 hubs only provide 1.5A of power and 5 GBps, so while the Pi could run on it, you couldn't power any attached devices and would get the reduced lightningbolt symbol performance as well. The powered hubs have dedicated charging ports, but these wire directly to the hub and not the machine, so while providing more power at a cost.
I also tried installing Gapps (BitGapps) for Android 11 but it failed once I signed in with a Google account. Oh well. 32-bit Gapps are also harder to come by anyway. For now I can always sideload apk files which don't rely on the play stuff and use Chrome for browsing. That's a good start.
The reason I need Android 11 is mostly for accessibility. Unlike for sighted folks where lower Android versions don't make an impact on how and what you can use, for the blind, each Android version introduces changes to the accessibility API. This is important as these changes can allow for things like brand new touch gestures (completely different gestures/ swipes and touches in Android 11 with Talkback ) to actual improvements on what the screen reader "sees" in the UI. So no, I'm not doing this to just have the version number myself, but to benefit from the latest changes to Android's accessibility API. I hope this makes sense.
Click to expand...
Click to collapse
Thanks for confirming that ADB over USB-C is working. This might be something that will be enabled by default in future builds.
Latest BiTGapps (BiTGApps-arm-11.0.0-R19_signed.zip) should work just fine. I haven't received any other reports with issues.
Yes, I totally understand that new Android versions bring improvements, that's the whole point. But IMO simply having a bigger version number shouldn't be any reason for doing releases if it's not otherwise feature ready or some things are broken. This is a bit of problem in this "scene" where early utterly broken stuff is being endorsed just because of the version number.

Related

[KERNEL][ICS-CM9 or JVU] USB Host mode (OTG) driver for SGS i9000 [BUILD 5]

USB Host mode driver for Samsung Galaxy S (i9000)
Also available on the Samsung Captivate and Nexus S
Vibrant and i9000B builds are avialable in some onecosmic kernels​
Disclaimer: This kernel will enable some very early, and rough usb OTG support for your phone. Currently the phone DOES NOT give out power, so you NEED an external power source to be able to use this kernel. This is true for ALL USB devices, even with those that have their own power source, and doesn't requre external bus powering. Solving this limitation is a TODO, but we cannot guarantee anything. There are some other phones that have usb host support the same way this kernel has (eg. they need external power), like the Nexus One, and there is also a community using this, so if you're saying that usb host support has no sense if you need an external power source then you are definitely mistaken.
This kernel is built upon teamhacksung's ICS Build 14 kernel, and will only work with that particular ROM (and later b15 and b16 versions of it). There is also a build for stock JVU (Gingerbread). It is possible to port this to older ROMs too (like CM7, or pre-GB ROMs). Ask your favourite kernel developer to do this for you. I only plan to support the CM9 and the stock Gingerbread version.
The patches are quite device-independent, so they should also work for other similar handsets, like all SGS variants (Captivate, Vibrant, epic, etc.), and also some distant relatives like the Nexus S, or the Galaxy Tab. I do not own these handsets, so you have to ask your favourite kernel developer to port the changesets to the other variants. I have already a build script for Captivate (CM9) and Nexus S (ICS) ports.
I might also try to create kernels for other devices if the following are true:
The kernel source is avialable on github. It is either a kernel for gingerbread (>=2.6.35) or for ICS (>=3.0)
It also contains (or has links to) the initramfs and all the other files needed to create an update.
If creating the update is not straightforward I also need a script to do this for me
After the update is made I need someone with the device to test it for me. If the feedback is positive I'll build versions for that device too, whenever something is changed.
Credits goes to:
The misterious guy at Samsung(?) called chul2 for the original s3c host drivers
Kevin Hester (kevinh, probably also nicknamed geeksville, punkgeek and humcycles) for fixing the s3c host driver for the Samsung Galaxy Tab
Ever kernel developer at teamhacksung for bringing ICS goodness to Galaxy S
This is a very early, and very rough usb host support. Expect crashes, freezes and things that are not working! You will also need external power (probably through a Y-cable or a powered usb hub, see the device connection guide below). Also make sure you are only using USB 2.0 (high-speed) devices. The driver does has some quirks with USB 1.x low-speed and full-speed devices, like mice, keyboards, gamepads and similar things. Read the FAQ for more information about them. And of course it doesn't work with USB 3.0 (super-speed) devices.
Device conection guide:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
FAQ: see post 2
ChangeLog: see post 3
Developer notes: see post 4
Download links: see post 6
Usb Host Controller: see it's own topic
FAQ!
Terminology
USB Host: The ability to connect other USB external devices to your device.
USB OTG: The ability of a device to work either as a client or as a host in an USB network.
OTG cable: An USB-micro male - USB-A female cable. It also has pins 4 and 5 connected inside the USB-micro male part.
USB Y-cable: A special USB cable that has three ends: two USB male-A ends (one data, one power port) and one USB-mini-B male end.
LS: USB 1.0 Low-speed (1.5 Mb/s)
FS: USB 1.1 Full-speed (12 Mb/s)
HS: USB 2.0 High-speed (460 Mb/s)
USB Hub: A device that lets you split the USB signal
Powered USB Hub: A hub that has an external power supply support
Upstream: The direction from the client device to the host device.
Control Transfer: One of the five transfer types used by the USB specification. It is responsible for maintainin the state of the USB devices.
Bulk Transfer: One of the five transfer types used by the USB specification. This is the most used one, used by drives, cameras and most proprietary usb devices.
Interrupt Transfer: One of the five transfer type used by the USB specification. This is mainly used in HID devices, like mice, keyboards and game controllers.
Isochronous Transfer: One of the five transfer types used by the USB specification. This is used in streaming devices, like usb audio and usb video devices, dvb receivers, etc.
Split Transfer: One of the five transfer types used by the USB specification. It is responsible for converting USB 1.x signals into USB 2.0 signals.
How to connect the things:
You will need:
The phone
An OTG-cable (make sure it's not NOKIA branded, as they have square connectors. You can use some sandpaper to smooth those edges though, so they'll fit inside a normal micro-USB base)
Either a powered USB hub (preferably that powers the upstream connection as well)
Or a simple USB hub, with a mini-USB connector and a Y-cable, and some USB power source (in this case the upstream powering works out of the box). You will need a decent usb power source though (5V/750mA at least)
Make sure the HUB support USB 2.0 and IS indeed an USB 2.0 high-speed hub. USB 1.x Full-speed hubs are very instable Even if it's an USB 2.0 hub it might not work. Either try to find another one, or connect the device directly to the phone (check the connection graphical guide below)
And, but not least, some things to connect to the phone.
Here is a short video of me demonstrating how bad my spoken English is (among other things): http://youtu.be/Yqfk7BOd8J4
And here is a graphical connection guide:
Here is another one (from developersdevelopers), showing how to solder a cable for yourselves:
How to install the kernel:
For CM9/ICS versions: Boot to recovery and use CWM to flash the update. DO NOT TRY to flash this to anything else than teamhacksung's ICS ROM.
For stock GB versions: Use Odin to flash the new kernel. Make sure you already have a recent GB ROM on your phone.
How to use:
By default host mode is turned off, and won't be activated even if you put in an OTG cable. This is for stability reasons. There is an application on Market called "Usb Host Controller" that allows you to enable host functionality. (It can also be downloaded separately) For best results connect the devices in this order:
Add power to the USB Hub / connect the power part of the Y cable to a source of power
Set Operation Mode in "Usb Host Controller" to OTG
Connect the OTG cable to the USB hub or device
Connect the OTG cable to the phone
If everything is fine, you should see the USB hub inside the USB tab in UHC. Next you might try to connect your peripherals one by one to the hub. You should always check whether they are enumerated or not. (by pressing refresh)
What is working:
USB 2.0 devices seem to work fine. This includes flash drives, and other accessories like Canon DSLRs. This concludes all USB 2.0 devices I have at home.
What does not work:
USB 1.x devices are very quirky (more about this later). USB 1.x devices include almost all HID devices (like keyboard and mice). Some external hubs are failing too. If you cannot connect your hub to the device try with another one, or try connecting the device without an external hub in the middle.
Also you will need to power the devices externally, as the phone doesn't give out power on the OTG connector.
USB device enumeration is also broken with mass storage devices: it will not re-enumerate the partitions and devices avialable after they have been connected. Since the 0.2 version of UHC it has a new function: reloading the partition table of a device. You have to do this manually. This might solve most of the "no partition found" problems, and will also lets you connect other Android devices.
Do I need a hub to get it working?
No, if you only want to connect one device you can connect it straight to the phone (if you provide it with +5V power). This means you can connect the one end of a Y cable to a power source, the other end to your device and the third end to the phone's OTG cable, and it will work. As it seems there are problems with some external hubs, if you can, then connect to the external device without using a hub in the middle.
What is "Usb Host Controller"?
Usb Host Controller is a small app, that let's you enumerate the USB devices that are connected to your phone. It also let's you easily mount and unmount FAT32 based partitions of the flash drives you connect. Besides these globally useful functions it also let's you control how the host mode should be working with.
Does DSLR Controller work?
According to chainfire the latest version (0.85) of DSLR Controller will work on CM9-ICS + Galaxy S and this kernel. On JVU even older versions (0.83) should work too.
Does it work on CM7, stock ROM, other Galaxy S variants, Nexus S, etc?
It currently works on the folloving devices and ROM versions:
Galaxy S i9000
CM9 / ICS
JVU / Gingerbread
Captivate
CM9 / ICS
Nexus S
(official) ICS 4.0.3
For other S5PV210/S5PC110/Hummingbird based devices this can be probably ported easily. I will do this if you ask me and the following things are present:
The kernel source is avialable on github. It is either a kernel for gingerbread (>=2.6.35) or for ICS (>=3.0)
It also contains (or has links to) the initramfs and all the other files needed to create an update.
If creating the update is not straightforward I also need a script to do this for me
After the update is made you will test it for me. If the feedback is positive I'll build versions for that device too, whenever something is changed.
Is there a chance that this will work without having an external power source?
Maybe. In theory the S3C controller has the appropriate functionality, but in practice it might not work (for example there might be missing connections inside the PCB, etc.)
What about USB 1.x devices
USB 1.x devices work since build 3 (the first JVU build), but only if you connect them to the device without a hub involved (you still need external power). They will still not work if you connect them to an USB 2.0 hub. You might connect more USB 1.x devices together if you happen to have an USB 1.x hub, but it needs patience (I managed to connect a mouse a keyboard and an external hard drive at one through an USB 1.x hub, but I had to try it at least 20 times to get them all properly enumerated. After that they worked though)
More info about USB 1.x devices: http://forum.xda-developers.com/showpost.php?p=21673976&postcount=101
Since Build 5, you can also choose to disable the USB 2 functionality of the phone. This will increase stability for USB 1.x devices, but will decrease the transfer speed of USB 2 devices, like external drives. If you want to connect USB 1.x devices through an USB 2.0 HUB, you will need to disable USB 2 mode though.
How to debug
The easiest way to debug is the following:
Turn on "Wireless ADB" on your phone. You can use UHC, or any other app that supports this for that.
Next connect to your phone wirelessly from your PC, and use the following commands:
Code:
> adb connect 192.168.1.100 (enter the actual ip address you get for your phone)
> adb shell
$ su
# echo o > /sys/devices/platform/s3c-usbgadget/opmode
# cat /proc/kmsg
The above command includes setting the operation mode of the host controller to "OTG mode", so you don't have to do it on the UHC.
If everything is fine, you should see results similar to this: http://forum.xda-developers.com/showpost.php?p=21686936&postcount=117
If devices don't get enumreated properly try switching back to client mode, then to OTG mode again, without disconnecting the devices. You might also try simply reconnecting the devices to the USB cable. Also make sure your power source can give out enough power. For debugging purposes I advice you to use the USB port of a computer / notebook as a power source because they can usually give out 1A of current out of one port. Most external chargers can only give out 500mA-600mA, which might not be enough for multiple devices.
It still doesn't work
There are unfortunately a lot of factors that might make the USB Host mode break. These include:
Non-conformant USB devices
Low quality cables
Low quality power soruces (chargers)
Solar flares
Underground nuclear tests
etc.
Try replacing the cables / devices / power sources and hope it will work next time.
ChangeLog
ChangeLog
BUILD 5 - CM9 galaxysmtd / captivatemtd; JVU galaxysbml; ICS nexuss
Release notes: http://forum.xda-developers.com/showpost.php?p=21908806&postcount=214
Added the option to run in USB 1.0 mode
Added the option to disable charging
Initial DWC driver support
A few small fixes
BUILD 4 - CM9 galaxysmtd / captivatemtd
Release notes: http://forum.xda-developers.com/showpost.php?p=21676191&postcount=102
Usb 1.x devices work a few times (check FAQ)
BUILD 3 - JVU galaxysbml
Release notes: http://forum.xda-developers.com/showpost.php?p=21673976&postcount=101
First native build for JVU
Usb 1.x devices work a few times (check FAQ)
BUILD 2 - CM9 galaxysmtd / captivatemtd
Upgraded to latest driver from SGS2 sources.
Fixed root hub device enumeration issue
Driver now clears allocated resources after cable is disconnected
BUILD 1 - CM9 galaxysmtd / captivatemtd
Initial version
For developers
For developers
Getting USB host mode was not really a priority for developers, and it wasn't also very easy. The kernel that Samsung provided had traces of EHCI and OHCI support, but they all seemed to be dead-ends. There was a working Host driver though on some releases, most notably the EA24 release of the Galaxy Tab. (From it we know that it is actually the same driver that is used on odroid2 and probably SGS2 too). This driver was actually not usable, but a fellow developer "Kevin Hester" fixed it, and posted it on his github account. Unfortunately his solution was based on a very old kernel, which used a lot of junk Samsung kernel stuff and deprecated features. Also he based the whole client-host switching code on the proprietary 30 pin connector, which is only used in Galaxy Tab variants. The above things meant that his code was not as easily portable as he probably thought.
My involvment was mainly to incorporate his fixed S3C Host driver to the latest 3.x kernel branch, fix some of it's internal workings, and put the client-host changer routines somewhere else (it actually landed in the client mode driver called s3c_udc_otg).
The driver works as following (if you find it inelegant note that the SGS2 does work the same way!):
The client mode gadget driver is always loaded. It is signalled by the FSA, if it sees that a cable is connected or disconnected. The FSA knows whether the cable is an OTG or a simple client one, and sends this information to the client driver.
Next the client driver decides whether it needs to change to host mode or not. If it changes, it deregisters his interrupt requests, and loads up the host driver. The client driver stays in memory, but without the interrupt handler routines it will not interfere with the host drivers working.
The host driver grabs the interrupt handler, and does the enumeration of the devices. It seems the root hub of the driver only does it once, so if anything changes between the phone and the first device (power loss, cable disconnection etc.) the driver won't notice it! (Thiks is why the first device should be a proper external usb hub, as it will re-enumerate devices if they are connected and disconnected. Losing the power supply will hang the host mode still though). EDIT: this is already solved.
The client driver still listens on cable changes by the FSA. For example if a cable is disconnected and the client driver is not in "host" mode, then it will shut down the host driver (it will unload it from the memory).
The client driver can be in 4 modes:
client: only client mode whatever happens
host: always host mode. The client will load the host mode driver the instant the client driver mode changes to host, and will stay so until the mode is changed again to something else
otg: client mode when no cable or a client cable is connected. Will switch to host mode if an otg cable is connected.
auto-host: client mode when no cable is connected. Will switch to host mode if an otg or a simple client cable is connected.
The actual mode can be queried from the file:
Code:
/sys/devices/platform/s3c-usbgadget/opmode
The actual mode can be set by echoing 'c','h','o' or 'a' to the previous file. (Or by using Usb Host Controller, which actually does the same internally)
After connecting external mass storage devices be aware that udev won't create the appropriate nodes inside /dev for them. Usb Host Controller will do this autoamtically, but from the console one needs to do an mknod, befure it can be mounted as a file system.
Build 5 notices
From Build 5 there are more host drivers built in: S3C in HS mode (original), S3C in LS/FS (eg. USB 1) mode, and an initial DWC driver. The latter is included as it uses the same specification, and it seems it might get into the upstream kernel branch too sometimes, meaning if it can be loaded it might actually get decent support later on. It also supports isochronous and split transactions, which the original S3C drivers lack.
The DWC driver does not work currently however, choosing it will usually crash the phone, and force a restart!
To change the driver you have to write 'l','f' or 'd' into the file:
Code:
/sys/devices/platform/s3c-usbgadget/hostdriver
Apart form that there is also a version file there, containing a few informations about the module.
There is also support to turn off charging, while the phone is connected to a charger. You can turn charging on/off inside the file disable_charger, which can be found somewhere in the sysfs (it's location might change between devices)
Uhh! Cliffhanger!
Downloads
Downloads
CWM Kernel Update:
build 5 nexus s ICS, anykernel: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build5_icsnexuss.zip
build 5 galaxy s mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build5_cm9galaxysmtd.zip
build 5 captivate mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build5_cm9captivatemtd.zip
build 4 galaxy s mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build4_cm9galaxysmtd.zip
build 4 captivate mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build4_cm9captivatemtd.zip
build 2 galaxy s mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build2_cm9galaxysmtd.zip
build 2 captivate mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build2_cm9captivatemtd.zip
build 1 galaxy s mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build1.zip
build 1 captivate mtd/cm9, based on teamhacksung's ICS Build 14: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build1_captivatemtd.zip
Odin kernel updates:
build 5 galaxy s JVU, based on cf-root 4.3 + stock gingerbread kernel: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build5_jvugalaxys.zip
build 3 galaxy s JVU, based on cf-root 4.3 + stock gingerbread kernel: http://android.sztupy.hu/dl/usbhost/kernel_usbhost_build3_jvugalaxys.zip
Usb Host Controller:
All releases can be found here: http://forum.xda-developers.com/showthread.php?t=1468531
Directory listing of all released files: http://android.sztupy.hu/dl/usbhost/
Source code of kernel driver:
CM9 galaxysmtd / captivatemtd: https://github.com/sztupy/samsung-kernel-aries
JVU GB update 2 galaxys: https://github.com/sztupy/samsung_kernel_galaxys_gb
ICS Nexus S: https://github.com/sztupy/samsung-kernel-herring
If you build a kernel that use the above source, please also link to Usb Host Controller and this topic, because without them the modification is not really usable for an end-user! If you do link both, and also drop me a PM, I will add your kernel to this list.
External resources:
My introductory video of showing how to put things together: http://youtu.be/Yqfk7BOd8J4
A page that descibes what can be done with a working USB Host mode on a Nexus One. Most of them apply to this kernel too, as the Nexus One doesn't give power to the device as well: http://sven.killig.de/android/N1/2.2/usb_host/
A page describing how you can connect an XBOX controller to the phone: http://forum.xda-developers.com/showthread.php?t=1466958
Wow!. :O .
I'm frozen with excitement. DSLR Controller , Ext. HDD's . Uses are endless. .
@sztupy,
Few questions, Can you point me towards a working OTG cable for i9000?
sztupy = Champion
Sztupy of t he omnia kitchen? :-o what a nice surprise
thanks mate nice to meet again
ngenhit said:
Wow!. :O .
I'm frozen with excitement. DSLR Controller , Ext. HDD's . Uses are endless. .
@sztupy,
Few questions, Can you point me towards a working OTG cable for i9000?
Click to expand...
Click to collapse
I don't know. I bought a nokia cable back then, thinking it will be good. It was expensive and didn't even fit. After some polishing it did work fine though (it is recognized as a proper otg cable, it doesn't fall out, etc.)
Now this looks epic.
Great job mate!
Great work!
My vote goes for adding Glitch Kernel
Wooow! Awesome! Thanks dude
www(dot)amazon(dot)com/Micro-USB-Host-Cable-accommodating/dp/B005GGBYJ4/ref=zg_bs_464394_32
(sorry cannot place URL)
Will this cable work?
--blank---
Long time no see.
Nice to have you back here.
This OTG-cable should be fine (although quite expensive)
http://www.amazon.de/Samsung-Mikro-USB-Adapter-R205U-z-B-Galaxy/dp/B004ULZD7U
The King is back...
Sent from my GT-I9000 using Tapatalk
scheichuwe said:
Long time no see.
Nice to have you back here.
This OTG-cable should be fine (although quite expensive)
http://www.amazon.de/Samsung-Mikro-USB-Adapter-R205U-z-B-Galaxy/dp/B004ULZD7U
Click to expand...
Click to collapse
Just ordered this one:
http://www.ebay.com/itm/160703436578
check it out
Great! I want to find this in next glitch kernel relase!
Wysłane z mojego GT-I9000 za pomocą Tapatalk
sztupy said:
How to connect the things:
Does DSLR Controller work?
I don't know. My Canon 60D gets enumerated so it might work. I do not own DSLR Controller (mainly because I only have a phone that has USB host functionality for 2 days)
Click to expand...
Click to collapse
There is an app for testing and you should be able to also test the full app for 15 minutes (enough for a quick plugin and functionality test...).
Nice work! Have you talked to Team Hacksung if they would include it in the default kernel? (with or without the app)

[ROM][Aug 25] Jellybean 4.2.2 for Endeavoru AOSP Build [Kernel 3.1.10] [JDQ39] #20

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Banner by Sebianoti​
Me and rogro82 started to port Android 4.2 to the HTC One X
Working
Wireless
Phone calls
GSM Data
Audio
Video Playback (including HD)
Camera (no photosphere - blame google)
GPS
NFC
Bluetooth
BT and Wireless tethering
Not Working
USB tethering (?)
Installation instructions
BACKUP YOUR DATA (using CWM)
Verify that your backup is complete - a backup of your sdcard may also be a good idea (see below)
Verify that you are running hboot 1.26 or newer (hboot 1.39 is recommended)
Download the ZIP and the boot.img (see Downloads)
Copy the .zip to your sdcard and reboot into fastboot
fastboot flash boot boot.img, then boot into recovery
WIPE your phone (this is not optional)
Install the .zip and reboot
Upgrading
You can always upgrade to a newer version without wiping any data, formatting system or wiping the cache.
But keep in mind that you must always flash boot.img + re-flash gapps after upgrading
Changelog
RC20 (20130825)
Fixed the two Android 'master key' bugs
Kernel patch for CVE-2013-2094
RC19 (20130317)
Merged CMs audio volume patch (http://review.cyanogenmod.org/#/c/33778/)
Changed gps.conf to use pool.ntp.org (they use geodns - why isn't this the default dear google?)
RC18 (20130311)
Option to control button backlight depending on the screen brightness (Settings -> Display)
Software fix for pabx's broken headphone jack detecion: Added an option to forcefully route mediaplayer-output to the headphone jack. (Settings -> Audio)
RC17 (20130301)
Use latest WIFI Firmware (improves reception)
RC16 (20130216)
Added ro.adb.secure=1 to build.props. The phone will now only accept ADB connections from authenticated hosts. Note that you must upgrade your local ADB installation to the version included in the 4.2.2 SDK. Connecting with an pre-4.2.2 adb will not work
Fixed quicksettings: longpress = toggle, press = settings
Internal: Use CMs nicer audio-recording patch
RC15 (20130213) Android 4.2.2
Upgraded to Android 4.2.2_r1
Silenced vibrate kernel driver + removed unneeded pm_qos request
RC14 (20130208) Kernel 3.1.10
First release with Linux 3.1.10. Note that you MUST upgrade your hboot to 1.3x (1.2 versions may work - any feedback is appreciated, but any version < 1.2 will NOT work - your phone will freeze during deepsleep!)
Mounting USB-OTG devices on 4.2 is somewhat tricky as filesystems are not shared with 'parent' processes - using some userspace app like 'Nexus Photo Importer' is recommended
Switched to ondemand govenor as the old 'interactive' is broken in HTCs Linux 3.1.10 source drop (doesn't make a big difference)
RC13 (20130202)
Merged missing cam pull request
Option to change the max frequency in settings (Developer Options -> CPU Frequency)
Improved frequency management - say goodbye audio dropouts!
RC12 (20130122)
More camera options (jpeg quality, burst mode, scenes) - thanks to seadersn
Option to enable the overflow button
New hardware button mapping profile: press = tasks / longpress = menu
RC11 (20130114)
Support for encrypted /data partition. (see this post)
Ability to limit the max CPU frequency (see this post)
Enhanced included Camera App (thanks to herrvorragend23)
Include SimToolkit
Option to change the Home + Menu longpress behaviour (Settings -> Display)
RC10 (20130104)
Support for big /data partition. This is experimental, see this post
Mount /data with '-o discard'
RC9 (20121229)
Added 'volume rocker' support (disabled by default -> settings -> sound)
Bluetooth Audio (A2DP) is now working
Stubborn BT devices should now be able to pair
RC8 (20121225)
Fixed WIFI Tethering
Changed halo background
RC7 (20121220) Doomsday edition
Bluetooth Tethering support (still a little bit flaky, try to re-enable bluetooth + tethering if the connection drops)
Changed quicksettings behaviour: Short press = toggle / Long press = open settings
Reboot + Screenshot options in Power-Off menu (thanks to lownoise2)
RC6 (20121219)
Support for Bluetooth file transfer and HID (Again: thanks to rogro82)
AUDIO AND INTERNET SHARING VIA BLUETOOTH ARE CURRENTLY NOT WORKING
RC5 (20121215)
Audio recording fixed (Send your thanks to rogro82)
Developer-Options enabled by default in Settings
Display internal + sdcard storage in Settings
Improved holo-background gardient
Switching from/to 2G-Data-Only works without reboot
'Silent' GSM-Data drop is hopefully gone
RC4 (20121211)
Camera support Install this if the camera icon is missing in your app drawer
RC3 (20121209)
Paid applications can now be installed using Play Store
Unity engine based games work correctly
Hboot 1.3x support
RC2 (20121202)
Multitouch fixed
Based on Android 4.2.1 (December fixed)
HD-Videos (OMX) working
RC1 (20121126)
Include Email.apk
Fix google location service provider (google now / gmaps)
Download links (always flash boot.img!)
http://blinkenlights.ch/static/android/endeavoru_42/latest/ (Primary host in Germany)
http://android.eqmx.net/android/endeavoru_42/latest/ (Mirror in Sweden)
Gapps download
NEW http://goo.im/gapps/gapps-jb-20121212-signed.zip
IRC Channel
Join us at #tg-endeavoru on Freenode irc
FAQ
I can not upgrade my hboot to 1.3x, help!
You can still run RC13:
This was the last release using Linux 2.6 and will therefore work on older hboot versions. RC13 is stable enough for everyday-use.
What kernel should i use?
Use the stock kernel from boot.img - there is nothing wrong with it. Using a different boot.img or/and kernel will just break stuff.
Even more links!
https://github.com/adrian-bl-hox-jb/android
https://plus.google.com/115564237657785223556/posts
For people wondering:
Although its an AOSP build it does have multi-user support which originally is only available on tablets in AOSP ( users can be added in settings )
Will try it as soon as links posted, thanks for your work! Can't wait for some of the important things like camera to work.
Will have to give this one a shot. Looks very interesting, even though there's some major flaws. Official CM10 has never been stable on the HOX, so looking for alternatives. AOSP might be the solution, in the long run (not currently in that state ).
Good luck with the upcoming work, attempts, hacks, tweaks etc.!
EDIT:
1. You can add NFC to the list of working things. Just tested it with a tag.
2. The performance of the ROM seems very snappy and nice. Just because of it I had to take a few benchmark tests, and yeah, the ROM performs! https://docs.google.com/spreadsheet/ccc?key=0Api2mSgk7cfUdENKWWVqNnUyS013dnJpMGxNQXZxeEE (oops, wasn't made public at first)
Generally about Android 4.2 and its new quick settings (QS):
I wonder why Google doesn't allow us to reorder the grid (by long pressing on the items, much like on their launcher; folders). Would be great if one could add or remove buttons too. Personally I'd like to add GPS + NFC and remove 'Airplane mode'. When tapping on the items their respective activities is started. Convenient sometimes, but it makes QS pretty much useless... On/Off toggling would've been the preferred way I think. Much like how the Airplane mode button works... it doesn't even ask the user if the device should be put in airplane mode (which I think is pretty vital).
Voted to XDA News page
5 Star'd
Keep up the good work Gentleman
Definitely wanna try, but will probably wait until it's a little more stable.
Needed to rename rc0.boot_img to rc0boot.img (really any .img name would work) but otherwise booting fine straight over the top of latest CM10 nightlies. I'm no dev, but love being on the bleeding edge
M.
booting, working fine, confirmed call, data, sms, multi users... will put my mirror up tonight or tomorrow
MashineGun said:
booting, working fine, confirmed call, data, sms, multi users... will put my mirror up tonight or tomorrow
Click to expand...
Click to collapse
NOT booting for me - I think its because i am on hboot 1.31 but anyway keep ist going
Great job. Thank you guys.
anja31:
Yes this is hboot related ( i will notify pabx to put this in the first post )
To everyone:
Please feel free to post bug reports ( if not already mentioned in the first post by pabx ) and in case of a crash a logcat would be great
This is really exciting, thanks guys.
Sent from my HTC One X using Tapatalk 2
Where do we find the Email app, for non-Gmail mail? I do see the Exchange apk, but no Email apk. Should we use the one from 4.1, or does 4.2 have a new mail client app? Thanks for the awesome work too by the way; so far this is actually impressively stable for a preview (known issues aside, and more testing to be done)!
Compiled the new Email app from source... I guess you can just push it to /system/app.
I have not been able to test it yet though, so i cant say if its 100% working
rogro82 said:
Compiled the new Email app from source... I guess you can just push it to /system/app.
I have not been able to test it yet though, so i cant say if its 100% working
Click to expand...
Click to collapse
This works (for pop3 at least).
M.
Sent from my HTC One X using xda premium
thank you!! i will try it once the camera works. :good:
First off, thanks for the rom - always great to try the newest version of android!
I found a bug with google now, it doesn't show me any cards relating to my location, it says that I need to turn on googles location services but they're already on.
rob9 said:
First off, thanks for the rom - always great to try the newest version of android!
I found a bug with google now, it doesn't show me any cards relating to my location, it says that I need to turn on googles location services but they're already on.
Click to expand...
Click to collapse
This is a known issue (see first post -> location services) and is already fixed in the git version.
We will probably release a new build that includes the fix today or tomorrow.
I have the feeling that the dpi is slightly off. On the lockscreen for example the widget area is bigger than the screen and The numberpad to enter the pin is cramped together. (I have no better way to explain it. Sorry)
Awesome guys keep on going will flash this one as soon as camera is fully functional as I really need it for work !!:good::good::good::good:

[ROM][Discontinued] ArchiDroid [CM_ROM][Linaro 4.7][Flexible] [V2.5.2] [01/08/14]

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Clean | Stable | Flexible | Optimized | Excellent
-> ArchiDroid 2.X <-
A Port of JustArchis Rom to our S1
Changelog
ArchiDroid 2.5.2
- Added additional r_submix audio module, idea thanks to @nelsonw # This should help with chromecast
- Updated PA GAPPS to 25 July
- Updated Nova Launcher to 3.0.2
- Updated Google Keyboard
- Updated XPrivacy to 2.2.2
- Updated Onandroid to 9.51
- Updated cm and ArchDroid sources (31.07.14)
Download
All Files Mediafire
Stable: ArchiDroid 2.4.5 Mediafire
Experimental: ArchiDroid 2.5.2 Dev-Host, Mirror: Mediafire
Remember that you don't need anything else to flash. Google Apps are included already.
Known Issues
All known and unknown Cyanogen Rom bugs (if any)
INSTALLATION INSTRUCTIONS
- Download the latest build of ArchiDroid ROM
1.- Wipe data / factory reset (mandatory if you coming from STOCK OR 4.2.X version or any other ROM)
2.- Install the Main ROM via Aroma installer, make your choices and lean back.
3.- Reboot
Attention: first boot will last a couple of minutes, at least almost 5 minutes or a few more. So after flashing take a rest and drink a coffee or a beer !
And after rom has booted up, led it settle a bit, till all apps and settings are initialised!
UPDATE INSTRUCTIONS
- Download the latest build of ArchiDroid ROM
- Take a nandroid backup
- Flash ROM using recovery and aroma installer
- Reboot
- Enjoy!
Known Bugs
-tethering is not working proper fixed in v2.5.0
In Aroma Installer you can select for example:
- 3 different Kernels: Stock, Neo and Mackay
- different Launchers
- different Keyboards
- different Bootanimations
- many additional apps
- to add nav bar
- to select: ro.config.low_ram=true or ro.config.low_ram=false (transparent statusbar)
and many other things
Follow ArchiDroid On XDA!
Write A Review!
Rate This Thread!
Buy JustArchi a Beer!
Like ArchiDroid On Facebook!
Hit Thanks!
XDA:DevDB Information
[ROM] [4.4.4. - KTU84P] [OmniROM] [Linaro 4.7] [Experimental] [Flexible] [Excellent] [01/08/14] ArchiDroid V2.5.2 | Power In Your Hands, a ROM for the Samsung Galaxy S1 I9000
This Rom is an official kanging of i9300 thread by @JustArchi lead developer and author of ArchiDroid ®. So all credits and thanks goes to JustArchi!!
Contributors
rodman01
ROM OS Version: 4.4.x KitKat
ROM Kernel: Linux 3.0.x
Based On: CyanogenROM / ArchiDroid / SelfKANG
Version Information
Status: Experimental 4.4.4 v
Created 2014-04-23
Last Updated 2014-08-01
[SIZE="+3"]ArchiDroid's FAQ / Q&A Section for i9300[/SIZE]​[SIZE="+1"]There is a special thread in the SIII section with and for FAQs. If you are interested in, I am sure there are good infos about the rom, for everybody and also related to our S1.[/SIZE]​
[SIZE="+1"]Features / Why ArchiDroid?[/SIZE]
First of all, ArchiDroid includes everything available in it's base. The whole point of ArchiDroid is to improve the base, without needing of making any trade-offs, so by flashing ArchiDroid, you're getting everything offered by the base itself. There's nothing to lose, everything to gain.
You can read detailed information about every ArchiDroid component here. It's a massive wall of text, so I'm only going to list the core features without describing them.
These were written from scratch, they're completely unique and you won't find exactly the same implementation in any other ROM.
ArchiDroid-Unique features:
- ArchiDroid's AROMA Installer
- ArchiDroid's Pocket Debian
- ArchiDroid's Flasher
- ArchiDroid's RunOnce
- ArchiDroid's Init
- ArchiDroid's Backend Control
- ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
- ArchiDroid's Fast Random Number Generator (Frandom)
- ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
- ArchiDroid's Forced Update
Apart from that, here, on the credits page, you can find all third-party projects, which have been implemented into ArchiDroid. In addition to that, it's up to YOU to decide if you want to install something, or not.
ArchiDroid focuses on flexibility and user choice.
If you're looking for fastest ROM, choose ArchiDroid.
If you're looking for most battery-saving ROM, choose ArchiDroid
If you're looking for cutting-edge functions, choose ArchiDroid
If you're looking for the most flexible rom ever created, definitely choose ArchiDroid
ArchiDroid adjusts to your needs. You can make it whatever you want. With bunch of presets, modes and questions, you can make your ArchiDroid behave. Check yourself why ArchiDroid is The TOP 1 ROM for Galaxy S3http://forum.xda-developers.com/galaxy-s3#romList, according to number of followers, rates, reviews and downloads count. Check the Reviews, take a look at Video Reviews, do whatever you want to, ArchiDroid is proven to be one of the best ROMs for Galaxy S3, ever created.
Try ArchiDroid once, and you'll never look back. I can assure you.
Disclaimer
Developer's Kitchen
Unless stated otherwise, all ArchiDroid components are licensed under the Apache License:
Code:
Copyright 2014 [email protected]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Especially:
ArchiDroid is one of the most complex ROMs ever created. When you start digging in my work, you can very easily get lost. And I'm not talking about base itself, but about everything next to it. You can use every part of my work, as long as:
1. You include proper credit where you should. This usually includes proper comment in a script/file and in the credits of the project, including license (if needed)
2. You let me know about this fact. Through PM on xda or e-mail
I'm always happy to help, especially with the problems I faced in the past. However I also want to be respected, considering that most of the ArchiDroid parts were written from scratch.
ArchiDroid 2.X vs. ArchiDroid 1.X
The long battle between choosing over ArchiDroid 2.X and 1.X is still recent. There's no one real and true answer to this. It's up to YOU to decide who wins this battle, because obviously every user is different. I'm only going to give you some tips and briefly describe differences.
Despite the name, ArchiDroid 2.X and 1.X are totally different ROMs. It all started with ArchiDroid 1.X, a ROM based on Sammy's stock firmware, with all needed goodies and features baked in. Then eventually I managed to implement everything what I ever wanted to implement, therefore making ArchiDroid 1.X more or less complete. Then I started with ArchiDroid 2.X project, built from scratch from AOSP sources, with all source codes available.
The point is, ArchiDroid 1.X is more or less complete, there's no "real" development going on, as I obviously don't have samsung sources to begin fun with. On the other hand, ArchiDroid 2.X will never be finished, there's always something to improve, something to add, something to fix... This is ongoing process, which will reach the end when I finally break my SGS3 or change the phone to another one .
If you're new user or you don't know how AOSP works on our SGS3s then I highly suggest to flash ArchiDroid 1.X firstly. ArchiDroid 2.X is targeted at advanced users, who don't mind some "core" features being broken. It will NEVER be as stable as ArchiDroid 1.X is, so if stability is the number 1 for you, choose 1.X.
ArchiDroid comparision
From 1-10, based on my own point of view
Stability
2.X - 5
1.X - 8
Compatibility
2.X - 4
1.X - 9
Battery
2.X - 6
1.X - 9
Performance
2.X - 9
1.X - 6
Features
2.X - 9
1.X - 4
Android Updates
2.X - 9
1.X - 6
-----------
Overall
2.X - 42
1.X - 42
This is ArchiDroid comparision in a nutshell. If you ask me, I think that ArchiDroid 1.X is far better choice for daily driver, but if you're advanced user and you know how to deal with possible broken functions then you can have great time using ArchiDroid 2.X as well.
Remember that only ArchiDroid 1.X supports Samsungs-specific features, such as Smart Stay, Screen mirroring, Allshare or whatever. This also includes closed-source proprietary drivers, such as many bluetooth headsets, which won't work under open-source AOSP. Think twice before considering 2.X if you're addicted to these Samsung goodies.
On the other hand, ArchiDroid 2.X is the only ArchiDroid with "real" development going on, however all universal changes are also backported back to ArchiDroid 1.X, so you're not missing any feature, which benefits also Sammy's base.
That's it. I hope that a choice between both of these awesome roms is a bit easier now. If you still can't decide I suggest to flash both of them for some time and then decide which suits you better.
Know Your ArchiDroid
ArchiDroid is not only a rom. It's not only a baked android with third-party apps, modifications and tweaks. ArchiDroid is an universal backend which improves rom by many built-in functions.
Let me tell you a story. During developing first version of ArchiDroid 2.0 I experienced many problems, which were not that easy to solve. First of all - apps data. Trust me or not but you can't simply extract data, put it in /data/data after install and hope that it works. Android will detect such injection, report inconsistent of data and wipe everything attached to that. Okay so... How I should provide you with my boeffla preset? CoolTool settings? STweaks profile? If I put my data during flashing it'll get wiped. If I put my data and deny wiping it then Android will report inconsistent of data to user and work unstable. Yes guys, it's impossible to do so without a trick or without recompiling whole rom.
I won't tell you a whole story, because you probably don't want to hear about ArchiDroid development. I'll simply tell you that I overcome MANY difficulties, simply because I do what I like, and I like what I do. After countless number of hours, I can finally provide you with the ROM, which is the best. Why is it the best? Because I'm improving the base, and I'm not making any trade-offs.
Video Reviews / How ArchiDroid looks like?
@Koogly
@SkywalkerZ
ArchiDroid User Signatures
ArchiDroid Features
Know your ArchiDroid, learn how to use it
Introduction / Basics
Welcome to ArchiDroid's world mortal. In this tutorial we will show you what ArchiDroid has "inside" and what it really offers. All of things included in this post are ArchiDroid-specific, which means that you won't find any ROM with the same features, as they're written from scratch.
Here you can find some definitions of the words used in sections below. You should know most of them, but in case somebody is lost here you can get back on track.
Terminal, Shell - Typical android shell, which may be obtained in three ways.
1. Through native Android Debug Bridge (ADB) with command "adb shell" from the PC or even "ADB through network" (if supported).
2. Through any Android terminal app, f.e. Android Terminal Emulator bundled with ArchiDroid.
3. Through secure shell daemon (sshd), which needs to be turned on firstly. This is extremely useful in terms of pocket debian, which will be described later.
You can use any of these methods to access android's terminal, however usually Android Terminal Emulator will be the easiest one, as it's android app bundled with ArchiDroid. WARNING! Most of the commands below WILL require root access. You can log in to super user shell by "su" command right after obtaining shell. If you're unsure if you're logged as root or not, "whoami" command should print actual user, "root" or "unknown uid 0" are OK, others are not.
ArchiDroid's Pocket Debian
From wikipedia:
From debian site:
How exactly this covers our beloved SGS3 (and countless number of other android arm-based phones)?
As you may (or even should!) know, Android operates on it's own Linux-based kernel. Android's kernel is literally a fork of Linux kernel, with a few special/unique functions which are required, mostly hardware-specific. Because of that kernel itself is VERY compatible with everything based on Linux.
However there have always existed one typical problem, lack of proper environment. We have a great kernel, great power, linux-based android environment, but this environment lacks of very common and required libraries/binaries. If you ever wondered what is or what does busybox, this is the answer. Busybox is just a small package which offers a few standalone GNU/Linux binaries, which are required to make certain things work. For example, swap priorities. Android knows what swap is, and nothing else. It doesn't know that swap could have a priority, so if you use android's swapon command on 4 devices, it will firstly fill first device, and then proceed to the next. That's why we need busybox in ALL custom kernels, because android environment isn't enough.
However busybox sometimes isn't enough. If we focus only on Android itself, it is. But if you for example want to run stricly linux-based service, I don't know, a web server for example... Is it possible to run a native linux web server on an android? No, it's not. You should firstly compile such service on arm architecture, including all dynamic and static libraries (wrrr ) in it only to finally get mad because of missing libraries or other dependencies. Of course if you're patient you'd finally compile everything and set up, however how long would it take? A few days maybe? If you're skilled in what you're doing...
This is why I included built-in "pocket" debian in ArchiDroid. It's FULLY compatible with everything compiled/based on armhf/armel GNU/Linux architecture, for example Raspberry Pi. With two easy commands you can literally jump into debian environment and use every typical GNU/Linux utilities known from debian itself. Of course this means nothing for most of the users, because they'll never have any reason to use such debian environment but from the developer side, it's big step forward. The best example is with github. As you know ArchiDroid has it's own repo on github, from where you can download/manage stuff. There also exists git app for linux and windows. If you want to follow "expert" way of flashing experimental ArchiDroid version, such program is required. The scenario is the same as compiling web server for an android, it requires much more effort than it's worth. And even then you can end up with syncing external dependencies and searching for solutions for the problems you've never seen before... And with ArchiDroid's pocket debian? It's as simple as in any debian/ubuntu distro. "apt-get update && apt-get install git" and voila. Your git is installed and ready for work. Going further I've even included git in pocket debian itself. Okay, I have debian, I have git, and what next? With git utility I can for example provide you with delta updates for ArchiDroid! ArchiDroid can easily use pocket debian to set up and sync ArchiDroid's repository and then pack and flash latest version without even needing of a PC, using 7-zip or anything else. Another example? A web server. I know that it's very dev-specific but if you for any reason need a web server running, just for example to test simple website, you can have it with just one command. Going further, VNC? MySQL server? PHP? Python? Perl? Ruby? Maybe conditional tasks with cron? Persistent minimal IRC client? rtorrent with rutorrent GUI over WWW? The list goes on... Anything based on linux will work. You can even host a server for your favourite game, as long as it has armhf/armel binaries (unfortunately most of the games don't).
So that's it. In short, debian is an operating system built-in in ArchiDroid to provide you with (unfortunately missing) GNU/Linux environment, with full power, ready to handle anything you could request. I made my best to include fully working debian in ArchiDroid for a minimal cost. Whole OS is packed in one big tar file, compressed using highest bzip2. As for now pocket debian has ONLY 40 megabytes of size, maybe in future it will have up to 50 megabytes, but no more. It's a VERY small cost for having such great power, especially if you know how to use it.
This is a really cutting-edge feature, mostly because I have no limitiations what I can include in my ROM right now, and while other developers are dealing with OpenDelta updates and many Android-based problems, I'm just launching my pocket debian and manages linux stuff.
I'm SURE that most of the advanced ArchiDroid user will just LOVE this feature, as much as I love it. I'm looking forward to your responses how YOU use pocket debian with your ArchiDroid. It's also a great time to learn what does the debian offer and how you can simplify your common tasks with just one example debian utility .
Technical informations:
1. Pocket Debian does not cause any additional overhead. We don't need to use emulation, neither virtualization to boot our monster. I used chroot technology to "jump" into debian environment with already running kernel and Android. That means additional required CPU/RAM is based on what you run in pocket debian. Booting itself doesn't require anything, just about one megabyte of ram for /bin/bash shell .
2. Android has some restrictions, mostly sockets. It doesn't allow to create inet sockets by default, even for root users. You will need to add your custom debian users to special group called "inet" (GID 3003) to allow creating of inet sockets, and you may also need to add a group to net_raw group (GID 3004) to allow creating of raw sockets. Please keep in mind that it's only required if you're running an app which required it's own socket, for example mysql server. So apt-get install mysql-server will fail right after booting, you will need to use "addgroup mysql inet" and then apt-get -f install to complete installation. Of course "mysql" is the new user under which mysql-server really operates. I've added root to both of these groups by default.
3. The only "real" restriction is the kernel. Our debian uses Android kernel and it's filesystem. It should work with most common tasks but in some cases our kernel may lack specific modules or built-in code, for example tun/tap required for OpenVPN. Still it's enough to run pretty much everything and if you get in touch with your favourite kernel developer you can also kindly ask for specific missing things.
4. Debian is built and included thanks to debootstrap utility, ArchiDroid command used for creating debian environment is debootstrap --verbose --arch armhf --include=git,ca-certificates,ssh,htop,tightvncserver,xterm,xfonts-base --exclude=manpages,man-db,rsyslog,vim-common,vim-tiny testing debian http://ftp.fr.debian.org/debian
HowTo:
Pocket Debian contains two main terminal commands, "adlinux" and "debian". Both of them are described below. By adlinux and debian you boot and jump into debian's chroot, which means you can use any debian-specific commands.
Examples:
passwd - changes password of actual user. This is needed to login as specific user, for example through ssh.
service ssh start - starts local SSH (secure shell) daemon on native port :22, to which you can easily access via any client supporting ssh, f.e. PuTTY. So basicly after you start shell you can literally connect to your local area network (LAN) IP on port 22 f.e. through PuTTY from your PC.
ifconfig - prints network-related informations about online interfaces, including your local IP, which may be useful for connecting to SSH.
htop - Enhanced top utility. Gives you very good terminal-based view on actual running processes, used ram, load, and more.
apt-get update - Syncs with debian's apt repository. This is mandatory to use many of apt commands because ArchiDroid's debian comes without local repo available, however fully configured to download and access it with just one command
apt-get install XXX - installs packet XXX from debian's repository.
apt-cache search XXX - searches for all packets including keyword "XXX". Ultra useful in terms of searching for specific packet.
Please note that pocket debian is VERY similar to normal native Debian/Ubuntu distribution, therefore above commands are not ArchiDroid's magic, they're very widely used in Debian/Ubuntu distros. If you want to learn more, most of the Debian/Ubuntu tutorials will be very helpful.
ArchiDroid's Pocket Debian Booter (adlinux)
You can call "adlinux" command from your favourite terminal.
adlinux is designed to boot and prepare ArchiDroid's Pocket Debian environment. It requires mode to be specified, and also respects any extra arguments passed.
If you call standalone "adlinux" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adlinux command, f.e. by executing "adlinux default", which will execute adlinux with "default" mode.
Available modes:
default - Will mount /data /system /storage/sdcard0 /storage/sdcard1 and core filesystems in chroot. Default suggested mode
safe - Will mount only core filesystems in chroot. Useful if you don't want to share your storage in chroot
bare - Won't mount even core filesystems such as /proc /dev or /sys. Requires "debian force" to enter chroot. This is the "real" safe mode. You won't be able to interact with an android in any way, while debian itself will work in very limited environment, making core functions unavailable. Suggested only for testing purposes
rebuild - Will automatically reboot your device and remove debian folder in the safe way. WILL CAUSE ALL DEBIAN DATA TO BE LOST!
unmount - Will automatically reboot your device to safely unmount debian environment
Extra options:
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
Additional information about modes:
Debian shares core kernel filesystems in "safe" and "default" modes, while it also shares your internal and external sd card in "default" mode. This is nothing to be scared of, as you have full control of what you run in debian, however please note that you CAN'T do whatever you want. All mounted partitions in debian are "binded". "Bind" means that it's mirrored to the mount point and all changes on mounted partition WILL affect the mount point, which is logical. This is nothing to be scared of, as long as you know that debian only extends your environment, it does not fully works in it's own and you CAN cause serious problems from inside of chroot. The only really safe mode is "bare" mode, however in "bare" mode debian can't really do anything, as kernel filesystems are absolutely required for most of the functions. Okay so, you need to know one thing. If you have booted debian you SHOULD NOT touch debian's folder, which is ArchiDroid/debian (on your internal or external sd card, depends what you choosed).. As you know debian for example binds /data to it's folder /data, which is physically ArchiDroid/debian/data. If you for example delete ArchiDroid/debian through root explorer WITH mounted debian then it will ALSO delete debian/data folder, which is binded to /data, and therefore will delete your whole internal sd card, that's why it's extremely important to take care because booted debian becomes part of the android and deleting it can cause at least soft bricks, with a possibility of hard as well. If you want to delete debian folder PLEASE use "rebuild" mode, only through this way you're absolutely sure that nothing bad happens and you won't delete your whole system partition by accident.
Note about extsd option:
Debian requires symlink functionality, typically native windows filesystems DON'T support symlinks, therefore you need to have your external sd card formatted in one of the native linux filesystems, f.e. ext4. adlinux will automatically tell you if debian can be unpacked and used on your external sd card, however it won't be possible under most common filesystems, such as exFAT or FAT32.
Technical informations:
1. Pocket debian archive is located in ArchiDroid/System/debian.tar.gz file. This is "bare" system used for creating environment for the first time, you should not touch it.
2. adlinux detects if debian is already extracted when booting, if not, it's firstly extracted from the file described above.
3. After extracting (if required), core filesystems are mounted with "bind" option based on the mode you've selected in "mode" question above. Typically it mounts /data /system /storage/sdcard0 /storage/sdcard1 /storage/extSdCard /dev /proc /sys.
4. Unmounting is not fully supported right now (linux barrier), therefore both "unmount" and "rebuild" options require a restart to execute properly.
ArchiDroid's Pocket Debian Shell/Chroot (debian)
You can call "debian" command from your favourite terminal.
debian command is designed to allow you "jumping" into debian chroot created by adlinux. Please read how adlinux command works firstly if you haven't done that already. debian command checks if core filesystems are available (if debian is booted), and if they are then it firstly modifies required environment variables to make debian happy (such as TERM, HOME, PATH), then it changes root (chroots) into debian folder, therefore allowing you to execute everything from inside of chroot. It's very generic command, therefore standalone "debian" command won't give you a choice the way adlinux did.
Available options (parameters):
force - required for jumping into bare debian, created with "adlinux bare" command above. This skips debian checks for mounted core filesystems, normally you should avoid it at all cost, unless you know what you're doing. If core filesystems are missing then it's very likely that your debian will be disabled in more than 90%.
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
cmd - Executes command in debian chroot
WARNING! cmd parameter will cause all further parameters to be threated as a command passed to debian, therefore you need to make sure that this is the last debian parameter which you want. For example "debian force cmd service ssh start" will skip filesystems checks and execute "service ssh start" in debian's chroot, however "debian cmd force service ssh start" will pass "force service ssh start" to debian, therefore respecting filesystems checks and passing invalid command.
This function is extremely useful for making init.d and other startup scripts. For example you can easily call "adlinux default" and then "debian cmd service ssh start" to call secure shell daemon on every boot with two easy steps.
Technical informations:
1. debian command uses chroot technology to change root of current shell to debian shell.
2. After chrooting to debian directory, /bin/bash shell is automatically called as default debian shell.
ArchiDroid's Flasher (adflash)
You can call "adflash" command from your favourite terminal.
adflash is a great small utility, which allows you to easily update your ArchiDroid to latest stable or experimental version with one easy command and delta upgrade. It utilizes ArchiDroid functions, therefore you must be running ArchiDroid to use it.
If you call standalone "adflash" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adflash command, f.e. by executing "adflash 2e git", which will execute adflash with 2.X-EXPERIMENTAL version using git mode.
Available versions:
2e - 2.X-EXPERIMENTAL
2s - 2.X-STABLE
1e - 1.X-EXPERIMENTAL
1s - 1.X-STABLE
Extra options:
git - Sets up local git repository, which gives you delta upgrades and bandwidth saving
direct - Downloads targeted branch as .zip file directly from github
clean - Cleans everything up, including local repo and tmp folder from ArchiDroid directory specified below
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard)
intsd - Use internal sd card (/data/media/0)
nozip - Shows changelog and changes only
Okay so, the most interesting option is the mode...
Direct mode is simple, fast and effective. It downloads target version (stable or experimental) from GitHub server, then it repacks downloaded zip file and makes it available for flash. You should use this mode for one-time downloads, such as once per stable version or two. The only advantage of this method is the ability to download from github (and with one command).
Git mode is complex. It uses ArchiDroid's Pocket Debian (read above) for cloning and updating local ArchiDroid repo. This gives several number of advantages, mostly for using experimental versions. Firstly, by having local ArchiDroid repo you have to download ONLY changes between your snapshot and server's snapshot, which means delta upgrades. Secondly, you have access to all commits from target branch, so you know exactly what has changed since your latest download. Again, this is extremely useful for experimental branch, as changelog may not be up-to-date. Keep in mind that git mode will require additional space on your device for keeping ArchiDroid repository, therefore you sacrifice some space for delta upgrades. This mode is extremely useful for flashing ArchiDroid often, for example daily experimental versions, because in fact you download only new commits instead of whole repo/archive.
ArchiDroid's RunOnce (Backend)
ArchiDroid's Init (Backend)
ArchiDroid's Backend Control
ArchiDroid Backend Control is a set of settings, which controls behaviour of ArchiDroid's Init. It's located in /system/archidroid/dev and contains a number of files, which are recognized by ArchiDroid's Init. You shouldn't directly touch /system/archidroid/dev, instead you can control behaviour of ArchiDroid's Backend through /system/archidroid/scripts. They can be easily executed through any script manager, f.e. Root Browser or Android Terminal Emulator. Some of the settings are also located in /system/archidroid/etc folder, mostly configurations for binaries utilized by ArchiDroid's Init.
ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers. Current development of haveged is directed towards improving overall reliablity and adaptability while minimizing the barriers to using haveged for other tasks.
The original HAVEGE research dates back to 2003 and much of the original haveged documentation is now quite dated. Recent work on haveged has included an effort to provide more recent information on the project and its applications.
The original research behind HAVEGE use was based upon studies of the behavior of processor caches from a hardware level. The 'Flutter' documents attempt to provide a modern view of HAVEGE at software level through the use of a diagnostic build of haveged that captures the non deterministic inputs to haveged for analysis by external tools.
ArchiDroid has built-in haveged entropy generator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Haveged_EnableDisable.sh. It's turned on in default configuration, through HAVEGED_ENABLED
ArchiDroid's Fast Random Number Generator (Frandom)
Frandom is a Linux kernel random number generator, which is 10-50 times faster than what you get from Linux' built-in /dev/urandom. And it uses very little (/dev/frandom) or none (/dev/erandom) of the kernel's entropy pool, so it is very useful for applications that require a handy source for lots of random data.
ArchiDroid has built-in frandom activator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Frandom_EnableDisable.sh. It's turned on in default configuration, through FRANDOM_ENABLED.
Notice: Kernel must support frandom module to actually make use of that. Init will try to search for frandom.ko module and load it, then use /dev/erandom for both /dev/random and /dev/urandom. If your kernel supports frandom, it will work. If it doesn't, obviously this will be skipped even if you have FRANDOM_ENABLED. Check ArchiDroid Init log located in /data/media/0/ArchiDroid/Init.log to check if frandom works properly for you.
ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
dnsproxy2 is a replacement DNS proxy for Android 4.3+
This currently allows the user to manually override the DNS server IP,
and it sets the correct UID on outbound requests so they can be filtered
via iptables / AFWall+ / DroidWall / etc.
Dnsmasq is a lightweight server designed to provide DNS, DHCP and TFTP services to a small-scale network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
Dnrd, Domain Name Relay Daemon is a caching, forwarding DNS proxy server. Most useful on vpn or dialup firewalls but it is also a nice DNS cache for minor networks and workstations.
Pixelserv is a super minimal webserver, it's one and only purpose is serving a 1x1 pixel transparent gif file. Using some creative firewalling (netfilter/iptables) rules you can redirect some webrequests (for adds for example) to pixelserv.
ArchiDroid has built-in Adblock. It's controlable through ArchiDroid's Backend Control:
ArchiDroid_Adblock_DnsmasqDnrdModeSwitch.sh
ArchiDroid_Adblock_EnableDisable.sh
ArchiDroid_Adblock_EnableDisableLocalDNSes.sh
ArchiDroid_Adblock_EnableDisableLocalDNSesDaemon.sh
ArchiDroid_Adblock_LockUnlockHosts.sh
ArchiDroid_Adblock_MoabAdawayHostsSwitch.sh
ArchiDroid_Adblock_Reload.sh
It's turned on in default configuration, through:
ADBLOCK_ENABLED
ADBLOCK_LOCAL_DNSES_DAEMON_ENABLED
ADBLOCK_LOCAL_DNSES_ENABLED
ADBLOCK_USE_ADAWAY_HOSTS
ADBLOCK_USE_DNSMASQ
In short. This is a very advanced and powerful solution for blocking ads through DNS queries. First of all we're forwarding all DNS traffic to localhost (127.0.0.1). Then we're handling them through local DNS server - dnsmasq (default), or dnrd (option). Our local DNS server reads blocked hostnames through special /system/archidroid/etc/hosts file, then if no record is found, it forwards DNS query to OpenDNS/Google DNS servers, or if it's found, returns 127.0.0.1 as the address. Lastly, pixelserv is providing a 1x1 NULLGIF response on local web server, so instead of big black/white screen instead of the AD, we get 1x1 transparent pixel, which usually perfectly hides ad from the app or the website.
Extra features:
1. You can specify if you want to use dnsmasq (default), or dnrd (option) as a local dns server. Dnsmasq is more flexible, modern, faster and has less memory footprint, however I also left dnrd as an option, because it's proven to work stable.
2. You can specify hosts file, which you want to use. In default configuration we use AdAway's hosts file, with more than 30 thousand of records, which results in extra ~2.5 MB memory usage. You have also an option to use MOAB (Mother Of Ad Blocking) hosts file, with more than 330 thousand of records, which will result in about ~30 MB memory usage. Eventually you can append your own rules or use non-standard hosts file, available in /system/archidroid/etc/hosts. Pro tip: You can point AdAway to use this hosts file (/system/archidroid/etc/hosts_adaway), which will result in automatic updates. /system/archidroid/etc/hosts is a symbolic link, either to hosts_away or hosts_moab, if you want to specify your own hosts, you can delete symbolic link and write your own rules.
3. Original /system/etc/hosts file has been locked from editing. This is to ensure that AdAway or other adblockers won't use obsolete and slow method of blocking ads through hosts. The whole point of implementing Adblock in ArchiDroid is to provide you with super-fast, flexible and effective way of blocking ads, also with getting rid of black/white ad screen. In 99% situations you don't want to touch ArchiDroid's default behaviour, as it blocks ads perfectly. Eventually, if you have a very good reason, you can unlock original hosts file through ArchiDroid's Backend Control and modify them, however keep in mind that every additional rule WILL slow down your network speed.
4. In default configuration local dns server uses two OpenDNS servers at port 5353, two Google DNS servers at port 53 and up to two local DNS servers provided by your Wi-Fi/3G connection, which overall gives a sum of 6 remote dns servers. In some rare scenarios (f.e. some wi-fi hotspots) you can notice that a moron, administrator of this wi-fi, blocked all dns queries and forces you to use his DNSes. This is BAD because of freedom and so on, but it's very common practice, that's why I turned on local DNSes as well. If you want to improve your privacy at least a bit, you can disable local DNS servers and then use only OpenDNS and Google DNS.
5. Above option initialy has been written to allow you one-time access to such non-trusty wi-fi's. But if you for any reason need automatic update of your local DNSes (3G and Wi-Fi's will use different local DNSes), you can also turn on Local DNSes Daemon, which will automatically query and update local DNSes if needed. This is also turned on in addition to local dnses above, of course in default preset.
ArchiDroid's Forced Update (RunOnce)
Forced update selected during mode selection in aroma tells RunOnce to work in "INSTALL" mode even on "UPDATE" mode, apart from that it works exactly the same as update mode, only RunOnce is affected.
Credits
First of all many thanks to JustArchi, who gave me the permission to port this rom
and helped me not only one time to get all things to work :good:!!!
Many many thanks JustArchi for the help and support!​
ArchiDroid Core
- AROMA Installer
- AROMA Filemanager
- Didhiy Kernel
- Neo Kernel
- PhilZ Touch Recovery
- SuperSU
- Nova Launcher
- TouchPal Keyboard
- Hacker's Keyboard
- Android Terminal Emulator
- BetterBatteryStats
- Cool Tool
- Greenify
- MX Player & Custom Codec
- LMT
- Root Browser
- Titanium Backup
- CrossBreeder
- Online Nandroid
- Xposed Framework
- App Settings
- XPrivacy
- Debian
- cURL
- GitHub
ArchiDroid 2.X
- OmniROM for GT-I9300
- Linaro Toolchain
- Spirit 2
- Wanam Xposed
Special thanks to:
- Kenshin, for graphic design and ArchiDroid Touhou bootanimation
- @mrtur, for graphic design and helpful hand during ArchiDroid experimental tests
- @malachow, for helping users across both international and polish board, sharing the spirit of ArchiDroid
- All ArchiDroid Contributors, for improving and making ArchiDroid better!
- ArchiDroid Facebook Group, for beta-testing the very first alphas of ArchiDroid 2.0.0
- ROM Cleaner, for awesome generic list of bloatware
- Android Revolution HD, for being ex-ArchiDroid 1.X base
- WanamLite, for being ex-ArchiDroid 1.X base
- Temasek's Unofficial Build, for being ex-ArchiDroid 2.X base
- crDroid, for being ex-ArchiDroid 2.X base
- You, for choosing ArchiDroid over other available ROMs
I'm very happy to see ArchiDroid running also on Galaxy S .
Let me know @rodman01 if you need any help or a helpful hand, and watch my github for ArchiDroid updates .
Thanks, yes I am happy too, that I got it to work finally (kernel choice is working, but selectable modes I skipped for the moment)...your help to get this all was highly appreciated and needed and I am sure I will come back again with questions . And yes sure, I will watch your github and when I as soon as I have time, I will create branch on my repo with the changes I made :good:.
rodman01 said:
Thanks, yes I am happy too, that I got it to work finally (kernel choice is working, but selectable modes I skipped for the moment)...your help to get this all was highly appreciated and needed and I am sure I will come back again with questions . And yes sure, I will watch your github and when I as soon as I have time, I will create branch on my repo with the changes I made :good:.
Click to expand...
Click to collapse
If I can suggest anything...
Make sure that my backend works properly on SGS, you can check logs in /data/media/0/ArchiDroid, and use ArchiDroid app to check if everything works properly (haveged, dnsmasq, dnsproxy2, pixelserv etc. should be ON). This give you a few ArchiDroid-unique features described in development thread. I used advanced SGS3-optimizations, so I'm wondering if you can launch it on SGS .
Apart from that my github is a real mine of knowledge, so if you dig deep enough you should get answers to everything .
And of course, I'm very glad to see that you made it!
Yes sure you can and I will check it...to be honest haven't realized this and afraid that this won't work , but will see and probably can fix this in one of the next versions (if possible in general for and with the S1?).
rodman01 said:
Yes sure you can and I will check it...to be honest haven't realized this and afraid that this won't work , but will see and probably can fix this in one of the next versions (if possible in general for and with the S1?).
Click to expand...
Click to collapse
I'll need to recompile these binaries for generic ARM target instead of SGS3 then, just watch my github and cherry-pick proper commit when it arrives .
haveged, dnsmasq, dnsproxy2, pixelserv are on and it seems that they are running. In init.log there are a few lines mentioning for example: no such file or directory. If you want and if helpfull I can pass you the logs you want.
rodman01 said:
haveged, dnsmasq, dnsproxy2, pixelserv are on and it seems that they are running. In init.log there are a few lines mentioning for example: no such file or directory. If you want and if helpfull I can pass you the logs you want.
Click to expand...
Click to collapse
If my binaries are running properly then it's great, you should have working adblock and entropy >= 1024.
Send me RunOnce and Init logs .
Yes sure no problem. Here are the log files attached....
rodman01 said:
Yes sure no problem. Here are the log files attached....
Click to expand...
Click to collapse
Wed Apr 23 00:17:20 CEST 2014
ArchiDroid 2.4.3 EXPERIMENTAL [KVT49L]
Linux localhost 3.0.101-KK44-x-aries-cma #1 PREEMPT Tue Apr 1 07:47:49 WIB 2014 armv7l GNU/Linux
INFO: ArchiDroid_RunOnce executed!
INFO: I'm a child!
WARNING: Forcing Install mode, even if Update mode found!
INFO: Install mode detected, I'm either after full wipe or forced to think so. Turning on ADMANY and DBUPDATE
I found ./de.robv.android.xposed.installer which need merging (data)
I found ./ds.cpuoverlay which need merging (data)
I found ./com.android.settings which need merging (data)
I found ./eu.chainfire.supersu which need merging (data)
I found ./org.omnirom.device which need merging (data)
INFO: I found 5 folders which need merging (data)
INFO: boot-dmesg NOT detected, turning off logcat banner
INFO: RunOnce Semaphore started
INFO: Android created settings.db for me, how cute! Performing DBUPDATE
INFO: Applying AOSP-specific DBUPDATE
INFO: Finished DBUPDATE
INFO: I'm currently merging com.android.settings, called by ADMANY
INFO: Done! 4 to go
INFO: I'm currently merging de.robv.android.xposed.installer, called by ADMANY
INFO: Done! 3 to go
INFO: I'm currently merging ds.cpuoverlay, called by ADMANY
INFO: Done! 2 to go
INFO: I'm currently merging eu.chainfire.supersu, called by ADMANY
INFO: Done! 1 to go
INFO: I'm currently merging org.omnirom.device, called by ADMANY
INFO: Done! 0 to go
INFO: I looped 91 times and didn't have to exit from infinite loop, that's nice (RunOnce Semaphore)
INFO: Calling Post-Installation functions (if any)
INFO: Could not detect RunOnce in init.d after cleanup, that's good
INFO: Reboot required, I'm rebooting the device right now
INFO: ArchiDroid RunOnce finished
Wed Apr 23 00:21:17 CEST 2014
Click to expand...
Click to collapse
RunOnce works great!
However Init not so .
HAVEGED: ArchiDroid entropy set to: 1024. Available entropy can't get below this level
HAVEGED: Current available entropy: 183
Click to expand...
Click to collapse
Looks like haveged is not working at all.
Apart from that, one more issue found:
/system/xbin/ARCHIDROID_INIT[438]: can't create /dev/archidroid/cron/events/internal/MONITOR_START_HAVEGED: No such file or directory
Click to expand...
Click to collapse
Is /dev directory available in your system?
Code:
ADPROC="/dev/archidroid"
mkdir -p "$ADPROC"
Because this piece of code should create archidroid dir in /dev.
---------- Post added at 10:37 PM ---------- Previous post was at 10:29 PM ----------
Also, check Cron.log in ArchiDroid dir (/data/media/0/ArchiDroid) if it's not infinite-looping due to that... .
JustArchi said:
Is /dev directory available in your system?
Code:
ADPROC="/dev/archidroid"
mkdir -p "$ADPROC"
Because this piece of code should create archidroid dir in /dev.
Click to expand...
Click to collapse
Yes the folder is available, but almost all files have 0.0 b size, could it be that sym links and/or missing or wrong permissions are the reason?
rodman01 said:
Yes the folder is available, but almost all files have 0.0 b size, could it be that sym links and/or missing or wrong permissions are the reason?
Click to expand...
Click to collapse
Check if you can create a folder in it as root: mkdir /dev/whatever
Perhaps I'll need to move my ADPROC somewhere else, as your device may not support folders in /dev.
Also, I added a safety check for that .
https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340
JustArchi said:
Check if you can create a folder in it as root: mkdir /dev/whatever
Perhaps I'll need to move my ADPROC somewhere else, as your device may not support folders in /dev.
Also, I added a safety check for that .
https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340
Click to expand...
Click to collapse
Yes you are right, seems that creating folders in /dev is not possible.
rodman01 said:
Yes you are right, seems that creating folders in /dev is not possible.
Click to expand...
Click to collapse
Try as root, as user you'll always get permission denied .
ok sorry, but no folder wasn't created, although terminal has asked for su permissions and had been given. But no new folder to see.
rodman01 said:
ok sorry, but no folder wasn't created, although terminal has asked for su permissions and had been given. But no new folder to see.
Click to expand...
Click to collapse
I'll need to add some more tunables to properly support your device. As for now you should sync with my work (mostly https://github.com/JustArchi/ArchiDroid/commit/b8cae2000d8802e7f9e270eb43b3c621895d9340) and ignore those errors .
Thanks for your help and as for now :good:...will sync it and try a new build, think tomorrow.

[EOL] [ROM] [5.1.1] [CyanogenMod] [GCC 4.9] [Excellent] [15/11/15] ArchiDroid V3.1.5

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Clean | Stable | Flexible | Optimized | Excellent
Changelog
ArchiDroid 3.1.5
- Newest ArchiKernel snapshot
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.4
- Newest ArchiKernel snapshot
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.3
- [i9300] Changed malloc implementation to dlmalloc
- Implemented dex-preoptimization for ART
- Removed xposed due to incompatibility with dex-preoptimized ART
- Newest ArchiKernel snapshot
- [nicki] AK: Added mpdecision switch to Synapse
- [nicki] Added optional dual-sim patch to AROMA
- Updated GAPPS, sources and other common things
ArchiDroid 3.1.2
- Switched arm-linux-androideabi toolchain back to SaberMod
- Fixed wrong auto-vectorization of ID3 iterator causing various media crashes with badly-tagged MP3s
- Newest ArchiKernel snapshot
- Updated GAPPS
- Updated Xposed
- Other misc changes and bugfixes
ArchiDroid 3.1.1
- ArchiDroid Optimizations V4.1
- ArchiDroid is now built with UBERTC 4.9 androideabi (instead of SaberMod 4.9) and 5.2 ArchiToolchain eabi (instead of 5.1)
- Newest ArchiKernel snapshot
- Updated GAPPS
- Updated Xposed
- Other misc changes and bugfixes
ArchiDroid 3.1
- Initial release
Important notes
- YOU DIRTY FLASH AT YOUR OWN RISK.
- FULL WIPE IS ALWAYS SUGGESTED WHEN FLASHING NEW VERSION.
- DON'T EXPECT A BUGLESS EXPERIENCE IF YOU DIRTY FLASH OR USE TITANIUM BACKUP.
ArchiDroid 3.1 is major new release based on CyanogenMod 12.1 (Android 5.1.1 Lollipop). There are too many changes compared to previous release of AD 3.0.X, so you should treat this version as totally new ROM. Here you can find some important notes to make update easier, and to avoid some possible issues:
- The only two kernels supported by AD are stock one, and ArchiKernel. AK is suggested one by me, as it already includes all major improvements I wanted to add, such as OC or deep AD optimizations. I DO NOT RECOMMEND FLASHING ANY OTHER CUSTOM KERNELS. Only AK uses my own AnyKernel method which guarantees 100% compatibility with the ROM, if you're using any other kernel you're doing it at your own risk, and it's nearly guaranteed to cause very deep incompatibility issues, which will hurt overall system stability.
- If coming from AD 3.0.X or any other ROM, regardless what it is, you should make full wipe. ArchiDroid is smart enough to detect itself during install and offer you an update, but this option should not be used with major release such as this one. Full wipe in necessary.
- It also means that you should AVOID restoring old, incompatible data with apps such as Titanium Backup. Full wipe means full wipe, not half wipe and restoring data later. Of course, it's up to you if you want to follow my suggestions or not, but do not expect that you'll have bugfree experience otherwise.
- You should update your recovery prior to flashing, again, regardless of what recovery you have now. The best way is to do so right from ArchiDroid ZIP, as AD offers updating recovery prior to flashing the rest, from AROMA. On the preset screen you can choose "Recovery", which will flash stock kernel + recovery combo (TWRP self-compiled by me). Then reboot recovery and flash the rest. All other recoveries, including other/older TWRPs are unsupported and you're using them at your own risk.
- While not mandatory, I suggest also a wipe of whole internal SD card (/data and /data/media), as this will make sure than no junk is left. If you don't want to do so, at least make sure to remove /data/media/0/ArchiDroid folder prior to flashing, even if you have experimental AD 3.1 already. I do not track all regressions and doing so will make sure that backend works in intended way. A best way to do so is to update your recovery first, then through TWRP file manager navigate to /data/media/0 and remove whole ArchiDroid folder.
- AD already has built-in GAPPS, provided by OpenGApps project. Flashing other GAPPS is not recommended, but if you know what you're doing you can still untick all Google Apps offered in AROMA (Whole GAPPS category including core gapps + also google launcher and google keyboard) and install your own GAPPS package after AD installation. Although, as I said, I suggest to stick with AD gapps, as they're proven to be working well, and they're tested by me and other experimental users.
TL;DR
- Use only ArchiKernel or Stock kernel included in AROMA
- Make full wipe
- Update recovery prior to flashing
- Wipe internal storage, or at least remove /data/media/0/ArchiDroid
- Flash AD
- Do not restore old data through titanium backup
- Enjoy your fresh ArchiDroid experience
Download
All Files XDA
Stable: ArchiDroid 3.1.5 GitHub | XDA Direct | XDA Torrent
Oldstable: ArchiDroid 3.0.1.1 GitHub | XDA Direct | XDA Torrent
Remember that you don't need anything else to flash. Google Apps are included already.
Known Issues
All known and unknown CyanogenMod bugs (if any)
Follow ArchiDroid On XDA!
Like ArchiDroid On Facebook!
Write A Review!
Rate This Thread!
Buy Me A Beer!
Hit Thanks!
XDA:DevDB Information
[EOL] [ROM] [5.1.1] [CyanogenMod] [GCC 4.9] [Excellent] [15/11/15] ArchiDroid V3.1.5, ROM for the Sony Xperia M
Contributors
JustArchi
Source Code: https://github.com/ArchiDroid/ArchiDroid/tree/nicki-cm-stable
ROM OS Version: 5.1.x Lollipop
ROM Kernel: Linux 3.4.x
Based On: CyanogenMod
Version Information
Status: Stable
Created 2014-07-06
Last Updated 2020-09-13
Reserved
[SIZE="+3"]ArchiDroid's FAQ / Q&A[/SIZE]​[SIZE="+1"]Please use above thread for information purpose only as it covers Samsung Galaxy S3 i9300[/SIZE]​
[SIZE="+1"]Features / Why ArchiDroid?[/SIZE]
First of all, ArchiDroid includes everything available in it's base. The whole point of ArchiDroid is to improve the base, without needing of making any trade-offs, so by flashing ArchiDroid, you're getting everything offered by the base itself. There's nothing to lose, everything to gain.
You can read detailed information about every ArchiDroid component here. It's a massive wall of text, so I'm only going to list the core features without describing them.
These were written from scratch, they're completely unique and you won't find exactly the same implementation in any other ROM.
ArchiDroid-Unique features:
- ArchiDroid's AROMA Installer
- ArchiDroid's Pocket Debian
- ArchiDroid's Flasher
- ArchiDroid's RunOnce
- ArchiDroid's Init
- ArchiDroid's Backend Control
- ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
- ArchiDroid's Fast Random Number Generator (Frandom)
- ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
- ArchiDroid's Forced Update
Apart from that, here, on the credits page, you can find all third-party projects, which have been implemented into ArchiDroid. In addition to that, it's up to YOU to decide if you want to install something, or not.
ArchiDroid focuses on flexibility and user choice.
If you're looking for fastest ROM, choose ArchiDroid.
If you're looking for most battery-saving ROM, choose ArchiDroid
If you're looking for cutting-edge functions, choose ArchiDroid
If you're looking for the most flexible rom ever created, definitely choose ArchiDroid
ArchiDroid adjusts to your needs. You can make it whatever you want. With bunch of presets, modes and questions, you can make your ArchiDroid behave. Check yourself why ArchiDroid is The TOP 1 ROM for Galaxy S3http://forum.xda-developers.com/galaxy-s3#romList, according to number of followers, rates, reviews and downloads count. Check the Reviews, take a look at Video Reviews, do whatever you want to, ArchiDroid is proven to be one of the best ROMs for Galaxy S3, ever created, and now strikes directly at Xperia M.
Try ArchiDroid once, and you'll never look back. I can assure you.
Disclaimer
ARCHIDROID SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE WARRANTIES THAT IT IS FREE OF DEFECTS, VIRUS FREE, ABLE TO OPERATE ON AN UNINTERRUPTED BASIS, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
Click to expand...
Click to collapse
Your warranty is now void.
I am not responsible for bricked devices, dead SD cards, thermonuclear war, or you getting fired because the alarm app failed. Please do some research if you have any concerns about features included in this ROM before flashing it! YOU are choosing to make these modifications, and if you point the finger at me for messing up your device, I will laugh at you. Hard. A lot.
Click to expand...
Click to collapse
Developer's Kitchen
Unless stated otherwise, all ArchiDroid components are licensed under the Apache License:
Code:
Copyright 2014 [email protected]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Especially:
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of this License; and
You must cause any modified files to carry prominent notices stating that You changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
Click to expand...
Click to collapse
ArchiDroid is one of the most complex ROMs ever created. When you start digging in my work, you can very easily get lost. And I'm not talking about base itself, but about everything next to it. You can use every part of my work, as long as:
1. You include proper credit where you should. This usually includes proper comment in a script/file and in the credits of the project, including license (if needed)
2. You let me know about this fact. Through PM on xda or e-mail
I'm always happy to help, especially with the problems I faced in the past. However I also want to be respected, considering that most of the ArchiDroid parts were written from scratch.
Know Your ArchiDroid
ArchiDroid is not only a rom. It's not only a baked android with third-party apps, modifications and tweaks. ArchiDroid is an universal backend which improves rom by many built-in functions.
Let me tell you a story. During developing first version of ArchiDroid 2.0 I experienced many problems, which were not that easy to solve. First of all - apps data. Trust me or not but you can't simply extract data, put it in /data/data after install and hope that it works. Android will detect such injection, report inconsistent of data and wipe everything attached to that. Okay so... How I should provide you with my boeffla preset? CoolTool settings? STweaks profile? If I put my data during flashing it'll get wiped. If I put my data and deny wiping it then Android will report inconsistent of data to user and work unstable. Yes guys, it's impossible to do so without a trick or without recompiling whole rom.
I won't tell you a whole story, because you probably don't want to hear about ArchiDroid development. I'll simply tell you that I overcome MANY difficulties, simply because I do what I like, and I like what I do. After countless number of hours, I can finally provide you with the ROM, which is the best. Why is it the best? Because I'm improving the base, and I'm not making any trade-offs.
GitHub / Versioning / Experimental Versions
ArchiDroid version contains 3 numbers. X.Y.Z. X is the base number of the rom. For now it won't change because ArchiDroid 1 is based on Sammy Rom and ArchiDroid 2 is based on CyanogenMod. Basically we have two numbers left, Y and Z. Y number will change when I'll implement something really new, when I'll make some advanced improvements or after many Z changes. Z number is the "standard" update, like updated sources, some bugfixes and so on.
I've learned many things since releasing of first ArchiDroid 1.0.0. Because of that I've also created a GitHub repository, which you can find here. What does it mean for you? First of all as you can see there are 2 different branches. nicki-cm-stable and nicki-cm-experimental. What does it mean? You can enter selected branch and click on "Commits" button to see every single update which I've made to selected branch. Experimental branches will get updates nearly every single day, while stable branch will form from a snapshot of current experimental branch, whenever I feel like it's ready.
However that doesn't mean you need to wait for my stable updates! You can easily "pack" latest experimental and flash without needing to wait for my weekly build. I'll tell you how to download and flash it by yourself.
[Newbie Version]
1. Open nicki-cm-experimental branch.
2. Click on Download Zip button located in bottom-right corner.
3. Install 7-Zip if you don't have that already. Other programs may, or may not work correctly.
4. Right-Click on zip, select Extract Here
5. Navigate to newly created ArchiDroid-nicki-cm-experimental folder
6. Select all files APART FROM __build folder, right-click and select 7-Zip => Add to archive
7. Make sure that you have zip format, fastest compression (to save some megabytes) and feflate method of compression.
8. Done! Copy newly created ArchiDroid-nicki-cm-experimental.zip to your phone and flash as usual.
[Expert Version]
1. Install Git for Windows or Linux
2. If you're on windows then make sure that windows won't change LF into CRLF (git config --global core.autocrlf false)
3. Clone my git repository using .git file. Keep in mind to specify depth, as this repo is really big. (git clone https://github.com/ArchiDroid/ArchiDroid.git --branch nicki-cm-experimental --depth 1)
4. Install 7-Zip if you don't have that already. Other programs may, or may not work correctly.
5. Select all files APART FROM __build folder, right-click and select 7-Zip => Add to archive
6. Make sure that you have zip format, fastest compression (to save some megabytes) and feflate method of compression.
7. Done! Copy newly created ArchiDroid-nicki-cm-experimental.zip to your phone and flash as usual.
8. In order to update your local repo execute git pull origin nicki-cm-experimental and go to point 5.
Additionally you can watch my short video, which shows how to flash experimental ArchiDroid going through "Expert Version".
Reserved
Video Reviews / How ArchiDroid looks like?
@Koogly
ArchiDroid User Signatures
ArchiDroid Features
Know your ArchiDroid, learn how to use it
Introduction / Basics
Welcome to ArchiDroid's world mortal. In this tutorial we will show you what ArchiDroid has "inside" and what it really offers. All of things included in this post are ArchiDroid-specific, which means that you won't find any ROM with the same features, as they're written from scratch.
Here you can find some definitions of the words used in sections below. You should know most of them, but in case somebody is lost here you can get back on track.
Terminal, Shell - Typical android shell, which may be obtained in three ways.
1. Through native Android Debug Bridge (ADB) with command "adb shell" from the PC or even "ADB through network" (if supported).
2. Through any Android terminal app, f.e. Android Terminal Emulator bundled with ArchiDroid.
3. Through secure shell daemon (sshd), which needs to be turned on firstly. This is extremely useful in terms of pocket debian, which will be described later.
You can use any of these methods to access android's terminal, however usually Android Terminal Emulator will be the easiest one, as it's android app bundled with ArchiDroid. WARNING! Most of the commands below WILL require root access. You can log in to super user shell by "su" command right after obtaining shell. If you're unsure if you're logged as root or not, "whoami" command should print actual user, "root" or "unknown uid 0" are OK, others are not.
ArchiDroid's Pocket Debian
From wikipedia:
Debian is an operating system composed of free software mostly carrying the GNU General Public License. The operating system is developed by an internet collaboration of volunteers aligned with The Debian Project.
Click to expand...
Click to collapse
From debian site:
As most of you know, Linux is just a kernel. And, for a long time, the Linux kernel ran only on the Intel x86 series of machines, from the 386 up.
However, this is no longer true, by any means. The Linux kernel has now been ported to a large, and growing, list of architectures. Following close behind, we have ported the Debian distribution to these architectures. In general, this is a process with a sticky start (as we get libc and the dynamic linker working smoothly), and then a relatively routine, if lengthy job, of attempting to recompile all our packages under the new architectures.
Debian is an operating system (OS), not a kernel (actually, it is more than an OS since it includes thousands of application programs)
Click to expand...
Click to collapse
How exactly this covers our beloved phone (and countless number of other android arm-based phones)?
As you may (or even should!) know, Android operates on it's own Linux-based kernel. Android's kernel is literally a fork of Linux kernel, with a few special/unique functions which are required, mostly hardware-specific. Because of that kernel itself is VERY compatible with everything based on Linux.
However there have always existed one typical problem, lack of proper environment. We have a great kernel, great power, linux-based android environment, but this environment lacks of very common and required libraries/binaries. If you ever wondered what is or what does busybox, this is the answer. Busybox is just a small package which offers a few standalone GNU/Linux binaries, which are required to make certain things work. For example, swap priorities. Android knows what swap is, and nothing else. It doesn't know that swap could have a priority, so if you use android's swapon command on 4 devices, it will firstly fill first device, and then proceed to the next. That's why we need busybox in ALL custom kernels, because android environment isn't enough.
However busybox sometimes isn't enough. If we focus only on Android itself, it is. But if you for example want to run stricly linux-based service, I don't know, a web server for example... Is it possible to run a native linux web server on an android? No, it's not. You should firstly compile such service on arm architecture, including all dynamic and static libraries (wrrr ) in it only to finally get mad because of missing libraries or other dependencies. Of course if you're patient you'd finally compile everything and set up, however how long would it take? A few days maybe? If you're skilled in what you're doing...
This is why I included built-in "pocket" debian in ArchiDroid. It's FULLY compatible with everything compiled/based on armhf/armel GNU/Linux architecture, for example Raspberry Pi. With two easy commands you can literally jump into debian environment and use every typical GNU/Linux utilities known from debian itself. Of course this means nothing for most of the users, because they'll never have any reason to use such debian environment but from the developer side, it's big step forward. The best example is with github. As you know ArchiDroid has it's own repo on github, from where you can download/manage stuff. There also exists git app for linux and windows. If you want to follow "expert" way of flashing experimental ArchiDroid version, such program is required. The scenario is the same as compiling web server for an android, it requires much more effort than it's worth. And even then you can end up with syncing external dependencies and searching for solutions for the problems you've never seen before... And with ArchiDroid's pocket debian? It's as simple as in any debian/ubuntu distro. "apt-get update && apt-get install git" and voila. Your git is installed and ready for work. Going further I've even included git in pocket debian itself. Okay, I have debian, I have git, and what next? With git utility I can for example provide you with delta updates for ArchiDroid! ArchiDroid can easily use pocket debian to set up and sync ArchiDroid's repository and then pack and flash latest version without even needing of a PC, using 7-zip or anything else. Another example? A web server. I know that it's very dev-specific but if you for any reason need a web server running, just for example to test simple website, you can have it with just one command. Going further, VNC? MySQL server? PHP? Python? Perl? Ruby? Maybe conditional tasks with cron? Persistent minimal IRC client? rtorrent with rutorrent GUI over WWW? The list goes on... Anything based on linux will work. You can even host a server for your favourite game, as long as it has armhf/armel binaries (unfortunately most of the games don't).
So that's it. In short, debian is an operating system built-in in ArchiDroid to provide you with (unfortunately missing) GNU/Linux environment, with full power, ready to handle anything you could request. I made my best to include fully working debian in ArchiDroid for a minimal cost. Whole OS is packed in one big tar file, compressed using highest bzip2. As for now pocket debian has ONLY 40 megabytes of size, maybe in future it will have up to 50 megabytes, but no more. It's a VERY small cost for having such great power, especially if you know how to use it.
This is a really cutting-edge feature, mostly because I have no limitiations what I can include in my ROM right now, and while other developers are dealing with OpenDelta updates and many Android-based problems, I'm just launching my pocket debian and manages linux stuff.
I'm SURE that most of the advanced ArchiDroid user will just LOVE this feature, as much as I love it. I'm looking forward to your responses how YOU use pocket debian with your ArchiDroid. It's also a great time to learn what does the debian offer and how you can simplify your common tasks with just one example debian utility .
Technical informations:
1. Pocket Debian does not cause any additional overhead. We don't need to use emulation, neither virtualization to boot our monster. I used chroot technology to "jump" into debian environment with already running kernel and Android. That means additional required CPU/RAM is based on what you run in pocket debian. Booting itself doesn't require anything, just about one megabyte of ram for /bin/bash shell .
2. Android has some restrictions, mostly sockets. It doesn't allow to create inet sockets by default, even for root users. You will need to add your custom debian users to special group called "inet" (GID 3003) to allow creating of inet sockets, and you may also need to add a group to net_raw group (GID 3004) to allow creating of raw sockets. Please keep in mind that it's only required if you're running an app which required it's own socket, for example mysql server. So apt-get install mysql-server will fail right after booting, you will need to use "addgroup mysql inet" and then apt-get -f install to complete installation. Of course "mysql" is the new user under which mysql-server really operates. I've added root to both of these groups by default.
3. The only "real" restriction is the kernel. Our debian uses Android kernel and it's filesystem. It should work with most common tasks but in some cases our kernel may lack specific modules or built-in code, for example tun/tap required for OpenVPN. Still it's enough to run pretty much everything and if you get in touch with your favourite kernel developer you can also kindly ask for specific missing things.
4. Debian is built and included thanks to debootstrap utility, ArchiDroid command used for creating debian environment is debootstrap --verbose --arch armhf --include=git,ca-certificates,ssh,htop,tightvncserver,xterm,xfonts-base --exclude=manpages,man-db,rsyslog,vim-common,vim-tiny testing debian http://ftp.fr.debian.org/debian
HowTo:
Pocket Debian contains two main terminal commands, "adlinux" and "debian". Both of them are described below. By adlinux and debian you boot and jump into debian's chroot, which means you can use any debian-specific commands.
Examples:
passwd - changes password of actual user. This is needed to login as specific user, for example through ssh.
service ssh start - starts local SSH (secure shell) daemon on native port :22, to which you can easily access via any client supporting ssh, f.e. PuTTY. So basicly after you start shell you can literally connect to your local area network (LAN) IP on port 22 f.e. through PuTTY from your PC.
ifconfig - prints network-related informations about online interfaces, including your local IP, which may be useful for connecting to SSH.
htop - Enhanced top utility. Gives you very good terminal-based view on actual running processes, used ram, load, and more.
apt-get update - Syncs with debian's apt repository. This is mandatory to use many of apt commands because ArchiDroid's debian comes without local repo available, however fully configured to download and access it with just one command
apt-get install XXX - installs packet XXX from debian's repository.
apt-cache search XXX - searches for all packets including keyword "XXX". Ultra useful in terms of searching for specific packet.
Please note that pocket debian is VERY similar to normal native Debian/Ubuntu distribution, therefore above commands are not ArchiDroid's magic, they're very widely used in Debian/Ubuntu distros. If you want to learn more, most of the Debian/Ubuntu tutorials will be very helpful.
ArchiDroid's Pocket Debian Booter (adlinux)
You can call "adlinux" command from your favourite terminal.
adlinux is designed to boot and prepare ArchiDroid's Pocket Debian environment. It requires mode to be specified, and also respects any extra arguments passed.
If you call standalone "adlinux" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adlinux command, f.e. by executing "adlinux default", which will execute adlinux with "default" mode.
Available modes:
default - Will mount /data /system /storage/sdcard0 /storage/sdcard1 and core filesystems in chroot. Default suggested mode
safe - Will mount only core filesystems in chroot. Useful if you don't want to share your storage in chroot
bare - Won't mount even core filesystems such as /proc /dev or /sys. Requires "debian force" to enter chroot. This is the "real" safe mode. You won't be able to interact with an android in any way, while debian itself will work in very limited environment, making core functions unavailable. Suggested only for testing purposes
rebuild - Will automatically reboot your device and remove debian folder in the safe way. WILL CAUSE ALL DEBIAN DATA TO BE LOST!
unmount - Will automatically reboot your device to safely unmount debian environment
Extra options:
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
Additional information about modes:
Debian shares core kernel filesystems in "safe" and "default" modes, while it also shares your internal and external sd card in "default" mode. This is nothing to be scared of, as you have full control of what you run in debian, however please note that you CAN'T do whatever you want. All mounted partitions in debian are "binded". "Bind" means that it's mirrored to the mount point and all changes on mounted partition WILL affect the mount point, which is logical. This is nothing to be scared of, as long as you know that debian only extends your environment, it does not fully works in it's own and you CAN cause serious problems from inside of chroot. The only really safe mode is "bare" mode, however in "bare" mode debian can't really do anything, as kernel filesystems are absolutely required for most of the functions. Okay so, you need to know one thing. If you have booted debian you SHOULD NOT touch debian's folder, which is ArchiDroid/debian (on your internal or external sd card, depends what you choosed).. As you know debian for example binds /data to it's folder /data, which is physically ArchiDroid/debian/data. If you for example delete ArchiDroid/debian through root explorer WITH mounted debian then it will ALSO delete debian/data folder, which is binded to /data, and therefore will delete your whole internal sd card, that's why it's extremely important to take care because booted debian becomes part of the android and deleting it can cause at least soft bricks, with a possibility of hard as well. If you want to delete debian folder PLEASE use "rebuild" mode, only through this way you're absolutely sure that nothing bad happens and you won't delete your whole system partition by accident.
Note about extsd option:
Debian requires symlink functionality, typically native windows filesystems DON'T support symlinks, therefore you need to have your external sd card formatted in one of the native linux filesystems, f.e. ext4. adlinux will automatically tell you if debian can be unpacked and used on your external sd card, however it won't be possible under most common filesystems, such as exFAT or FAT32.
Technical informations:
1. Pocket debian archive is located in ArchiDroid/System/debian.tar.gz file. This is "bare" system used for creating environment for the first time, you should not touch it.
2. adlinux detects if debian is already extracted when booting, if not, it's firstly extracted from the file described above.
3. After extracting (if required), core filesystems are mounted with "bind" option based on the mode you've selected in "mode" question above. Typically it mounts /data /system /storage/sdcard0 /storage/sdcard1 /storage/extSdCard /dev /proc /sys.
4. Unmounting is not fully supported right now (linux barrier), therefore both "unmount" and "rebuild" options require a restart to execute properly.
ArchiDroid's Pocket Debian Shell/Chroot (debian)
You can call "debian" command from your favourite terminal.
debian command is designed to allow you "jumping" into debian chroot created by adlinux. Please read how adlinux command works firstly if you haven't done that already. debian command checks if core filesystems are available (if debian is booted), and if they are then it firstly modifies required environment variables to make debian happy (such as TERM, HOME, PATH), then it changes root (chroots) into debian folder, therefore allowing you to execute everything from inside of chroot. It's very generic command, therefore standalone "debian" command won't give you a choice the way adlinux did.
Available options (parameters):
force - required for jumping into bare debian, created with "adlinux bare" command above. This skips debian checks for mounted core filesystems, normally you should avoid it at all cost, unless you know what you're doing. If core filesystems are missing then it's very likely that your debian will be disabled in more than 90%.
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard), if possible
intsd - Use internal sd card (/data/media/0)
cmd - Executes command in debian chroot
WARNING! cmd parameter will cause all further parameters to be threated as a command passed to debian, therefore you need to make sure that this is the last debian parameter which you want. For example "debian force cmd service ssh start" will skip filesystems checks and execute "service ssh start" in debian's chroot, however "debian cmd force service ssh start" will pass "force service ssh start" to debian, therefore respecting filesystems checks and passing invalid command.
This function is extremely useful for making init.d and other startup scripts. For example you can easily call "adlinux default" and then "debian cmd service ssh start" to call secure shell daemon on every boot with two easy steps.
Technical informations:
1. debian command uses chroot technology to change root of current shell to debian shell.
2. After chrooting to debian directory, /bin/bash shell is automatically called as default debian shell.
ArchiDroid's Flasher (adflash)
You can call "adflash" command from your favourite terminal.
adflash is a great small utility, which allows you to easily update your ArchiDroid to latest stable or experimental version with one easy command and delta upgrade. It utilizes ArchiDroid functions, therefore you must be running ArchiDroid to use it.
If you call standalone "adflash" command then it will print usage and then ask you what you want to do with giving proper informations about every choice. Additionally if you know what you want to do, you can also pass arguments directly to adflash command, f.e. by executing "adflash 2e git", which will execute adflash with 2.X-EXPERIMENTAL version using git mode.
Available versions:
2e - 2.X-EXPERIMENTAL
2s - 2.X-STABLE
1e - 1.X-EXPERIMENTAL
1s - 1.X-STABLE
Extra options:
git - Sets up local git repository, which gives you delta upgrades and bandwidth saving
direct - Downloads targeted branch as .zip file directly from github
clean - Cleans everything up, including local repo and tmp folder from ArchiDroid directory specified below
extsd - Use external sd card (/storage/sdcard1 /storage/extSdCard)
intsd - Use internal sd card (/data/media/0)
nozip - Shows changelog and changes only
Okay so, the most interesting option is the mode...
Direct mode is simple, fast and effective. It downloads target version (stable or experimental) from GitHub server, then it repacks downloaded zip file and makes it available for flash. You should use this mode for one-time downloads, such as once per stable version or two. The only advantage of this method is the ability to download from github (and with one command).
Git mode is complex. It uses ArchiDroid's Pocket Debian (read above) for cloning and updating local ArchiDroid repo. This gives several number of advantages, mostly for using experimental versions. Firstly, by having local ArchiDroid repo you have to download ONLY changes between your snapshot and server's snapshot, which means delta upgrades. Secondly, you have access to all commits from target branch, so you know exactly what has changed since your latest download. Again, this is extremely useful for experimental branch, as changelog may not be up-to-date. Keep in mind that git mode will require additional space on your device for keeping ArchiDroid repository, therefore you sacrifice some space for delta upgrades. This mode is extremely useful for flashing ArchiDroid often, for example daily experimental versions, because in fact you download only new commits instead of whole repo/archive.
ArchiDroid's RunOnce (Backend)
ArchiDroid's Init (Backend)
ArchiDroid's Backend Control
ArchiDroid Backend Control is a set of settings, which controls behaviour of ArchiDroid's Init. It's located in /system/archidroid/dev and contains a number of files, which are recognized by ArchiDroid's Init. You shouldn't directly touch /system/archidroid/dev, instead you can control behaviour of ArchiDroid's Backend through /system/archidroid/scripts. They can be easily executed through any script manager, f.e. Root Browser or Android Terminal Emulator. Some of the settings are also located in /system/archidroid/etc folder, mostly configurations for binaries utilized by ArchiDroid's Init.
ArchiDroid's HArdware Volatile Entropy Gathering and Expansion Daemon (Haveged)
The haveged project is an attempt to provide an easy-to-use, unpredictable random number generator based upon an adaptation of the HAVEGE algorithm. Haveged was created to remedy low-entropy conditions in the Linux random device that can occur under some workloads, especially on headless servers. Current development of haveged is directed towards improving overall reliablity and adaptability while minimizing the barriers to using haveged for other tasks.
The original HAVEGE research dates back to 2003 and much of the original haveged documentation is now quite dated. Recent work on haveged has included an effort to provide more recent information on the project and its applications.
The original research behind HAVEGE use was based upon studies of the behavior of processor caches from a hardware level. The 'Flutter' documents attempt to provide a modern view of HAVEGE at software level through the use of a diagnostic build of haveged that captures the non deterministic inputs to haveged for analysis by external tools.
ArchiDroid has built-in haveged entropy generator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Haveged_EnableDisable.sh. It's turned on in default configuration, through HAVEGED_ENABLED
ArchiDroid's Fast Random Number Generator (Frandom)
Frandom is a Linux kernel random number generator, which is 10-50 times faster than what you get from Linux' built-in /dev/urandom. And it uses very little (/dev/frandom) or none (/dev/erandom) of the kernel's entropy pool, so it is very useful for applications that require a handy source for lots of random data.
ArchiDroid has built-in frandom activator. It's controlable through ArchiDroid's Backend Control - ArchiDroid_Frandom_EnableDisable.sh. It's turned on in default configuration, through FRANDOM_ENABLED.
Notice: Kernel must support frandom module to actually make use of that. Init will try to search for frandom.ko module and load it, then use /dev/erandom for both /dev/random and /dev/urandom. If your kernel supports frandom, it will work. If it doesn't, obviously this will be skipped even if you have FRANDOM_ENABLED. Check ArchiDroid Init log located in /data/media/0/ArchiDroid/Init.log to check if frandom works properly for you.
ArchiDroid's Adblock (dnsmasq/dnrd, dnsproxy2, pixelserv)
dnsproxy2 is a replacement DNS proxy for Android 4.3+
This currently allows the user to manually override the DNS server IP,
and it sets the correct UID on outbound requests so they can be filtered
via iptables / AFWall+ / DroidWall / etc.
Dnsmasq is a lightweight server designed to provide DNS, DHCP and TFTP services to a small-scale network. It can serve the names of local machines which are not in the global DNS. The DHCP server integrates with the DNS server and allows machines with DHCP-allocated addresses to appear in the DNS with names configured either in each host or in a central configuration file. Dnsmasq supports static and dynamic DHCP leases and BOOTP for network booting of diskless machines.
Dnrd, Domain Name Relay Daemon is a caching, forwarding DNS proxy server. Most useful on vpn or dialup firewalls but it is also a nice DNS cache for minor networks and workstations.
Pixelserv is a super minimal webserver, it's one and only purpose is serving a 1x1 pixel transparent gif file. Using some creative firewalling (netfilter/iptables) rules you can redirect some webrequests (for adds for example) to pixelserv.
ArchiDroid has built-in Adblock. It's controlable through ArchiDroid's Backend Control:
ArchiDroid_Adblock_DnsmasqDnrdModeSwitch.sh
ArchiDroid_Adblock_EnableDisable.sh
ArchiDroid_Adblock_EnableDisableLocalDNSes.sh
ArchiDroid_Adblock_EnableDisableLocalDNSesDaemon.sh
ArchiDroid_Adblock_LockUnlockHosts.sh
ArchiDroid_Adblock_MoabAdawayHostsSwitch.sh
ArchiDroid_Adblock_Reload.sh
It's turned on in default configuration, through:
ADBLOCK_ENABLED
ADBLOCK_LOCAL_DNSES_DAEMON_ENABLED
ADBLOCK_LOCAL_DNSES_ENABLED
ADBLOCK_USE_ADAWAY_HOSTS
ADBLOCK_USE_DNSMASQ
In short. This is a very advanced and powerful solution for blocking ads through DNS queries. First of all we're forwarding all DNS traffic to localhost (127.0.0.1). Then we're handling them through local DNS server - dnsmasq (default), or dnrd (option). Our local DNS server reads blocked hostnames through special /system/archidroid/etc/hosts file, then if no record is found, it forwards DNS query to OpenDNS/Google DNS servers, or if it's found, returns 127.0.0.1 as the address. Lastly, pixelserv is providing a 1x1 NULLGIF response on local web server, so instead of big black/white screen instead of the AD, we get 1x1 transparent pixel, which usually perfectly hides ad from the app or the website.
Extra features:
1. You can specify if you want to use dnsmasq (default), or dnrd (option) as a local dns server. Dnsmasq is more flexible, modern, faster and has less memory footprint, however I also left dnrd as an option, because it's proven to work stable.
2. You can specify hosts file, which you want to use. In default configuration we use AdAway's hosts file, with more than 30 thousand of records, which results in extra ~2.5 MB memory usage. You have also an option to use MOAB (Mother Of Ad Blocking) hosts file, with more than 330 thousand of records, which will result in about ~30 MB memory usage. Eventually you can append your own rules or use non-standard hosts file, available in /system/archidroid/etc/hosts. Pro tip: You can point AdAway to use this hosts file (/system/archidroid/etc/hosts_adaway), which will result in automatic updates. /system/archidroid/etc/hosts is a symbolic link, either to hosts_away or hosts_moab, if you want to specify your own hosts, you can delete symbolic link and write your own rules.
3. Original /system/etc/hosts file has been locked from editing. This is to ensure that AdAway or other adblockers won't use obsolete and slow method of blocking ads through hosts. The whole point of implementing Adblock in ArchiDroid is to provide you with super-fast, flexible and effective way of blocking ads, also with getting rid of black/white ad screen. In 99% situations you don't want to touch ArchiDroid's default behaviour, as it blocks ads perfectly. Eventually, if you have a very good reason, you can unlock original hosts file through ArchiDroid's Backend Control and modify them, however keep in mind that every additional rule WILL slow down your network speed.
4. In default configuration local dns server uses two OpenDNS servers at port 5353, two Google DNS servers at port 53 and up to two local DNS servers provided by your Wi-Fi/3G connection, which overall gives a sum of 6 remote dns servers. In some rare scenarios (f.e. some wi-fi hotspots) you can notice that a moron, administrator of this wi-fi, blocked all dns queries and forces you to use his DNSes. This is BAD because of freedom and so on, but it's very common practice, that's why I turned on local DNSes as well. If you want to improve your privacy at least a bit, you can disable local DNS servers and then use only OpenDNS and Google DNS.
5. Above option initialy has been written to allow you one-time access to such non-trusty wi-fi's. But if you for any reason need automatic update of your local DNSes (3G and Wi-Fi's will use different local DNSes), you can also turn on Local DNSes Daemon, which will automatically query and update local DNSes if needed. This is also turned on in addition to local dnses above, of course in default preset.
ArchiDroid's Forced Update (RunOnce)
Forced update selected during mode selection in aroma tells RunOnce to work in "INSTALL" mode even on "UPDATE" mode, apart from that it works exactly the same as update mode, only RunOnce is affected.
Last one.
Download links now available.
Please note that it's the first release of ArchiDroid 2.X for Xperia M so it's pretty much a beta release. However I couldn't find any major issues so you don't need to worry about bugs.
Xperia M-specific informations:
1. Kernel is compiled from FreeXperia sources, with small additions to make it work with ArchiDroid Optimizations. Including being compiled with GCC 4.8.
2. I decided that TWRP is at the moment the most stable and feature-rich recovery for nicki, so ArchiDroid kernel natively comes with TWRP recovery.
3. You can flash this ROM using any custom recovery available at the moment, including TWRP, CWM and PhilZ. Just keep in mind that ROM will overwrite kernel (and your recovery) after installation. I strongly suggest to stay with ArchiDroid kernel as it has pretty neat optimizations (linked above) but it's your choice.
Missing reserved posts, including credits will be added ASAP.
Have fun, please give feedback . If you appreciate my work, you can always buy me a beer!
What about sd support?
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
What about sd support?
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
ArchiDroid is very strongly based on CyanogenMod 11, so everything what works for CM most likely will also work for AD.
Will try
Anyways features are bit complicated for me
Hehe
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
Will try
Anyways features are bit complicated for me
Hehe
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
This is not a toy, ArchiDroid has even his own Debian OS inside . However thanks to my AROMA installer flashing and using AD can be ultimately easy or ultimately advanced, everything depends on you.
JustArchi said:
This is not a toy, ArchiDroid has even his own Debian OS inside . However thanks to my AROMA installer flashing and using AD can be ultimately easy or ultimately advanced, everything depends on you.
Click to expand...
Click to collapse
Thats awsm man
Downloading now
Will report soon
Sent from my Xperia M using XDA Premium 4 mobile app
Hello rom is totally awsm but can u tell me how to disable those status bar thinga
Sent from my Xperia M using XDA Premium 4 mobile app
theviper said:
Hello rom is totally awsm but can u tell me how to disable those status bar thinga
Sent from my Xperia M using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Reading Q&A may help .
Are you going to update this rom with new cm fxp builds?
Awwww yeah @JustArchi in the house. Great to see you here man, goodluck with this !
On topic, will be waiting patiently to try this as I am currently busy with something else.
Really awesome rom mean :good: :fingers-crossed:
Barua said:
Are you going to update this rom with new cm fxp builds?
Click to expand...
Click to collapse
I'm using their sources so you can expect updates from time to time. However Xperia M is not my daily device.
Really awesome rom @JustArchi I flashed it yesterday night and untill now just the fastest rom I ever used, also the 160dpi is cool en look great really thanks for this masterpiece, I'm never leave Archidroid
EDIT: I see you have not included frandrom are u thinking to implement that in the next release ?
Sent from my C1905 using XDA Free mobile app
android-turk said:
Really awesome rom @JustArchi I flashed it yesterday night and untill now just the fastest rom I ever used, also the 160dpi is cool en look great really thanks for this masterpiece, I'm never leave Archidroid
EDIT: I see you have not included frandrom are u thinking to implement that in the next release ?
Sent from my C1905 using XDA Free mobile app
Click to expand...
Click to collapse
Fairly easy but I don't want to touch the kernel too much. Right now it includes only two little fixes for GCC 4.8.
Also, yeah, this is potentially the fastest and most optimized ROM for Xperia M at the moment, thanks to my optimizations and GCC 4.8.
hey
this will work on xperia M Dual with both sim card slot ????

[EXPERIMENTAL][AOSP][NRD90U] Unofficial Android 7.0 Nougat build

Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.
*
* I am not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*/
Hello guys, this is an unofficial build of AOSP Nougat (with tag android-7.0.0_r6). Kernel is based on CM13's, with some recent commits in kernel/common in AOSP. Sources and patches are available at the end of the post.
Note: this ROM is just for having the first taste of Nougat, and thus missing a lot of key features. I may not be able to update it regularly.
Basic hardware functionality:
Almost everything works, except video hardware encoding, which causes camcorder to fail. HW decoding works though.
Everything should be working since 20160903.
I didn't find more hardware failures, but there can be more.
And remember, the proprietary firmwares and blobs are still in the age of Marshmallow, and a system won't be complete without corresponding firmwares and blobs.
Known bugs:
1. HW disk encryption is likely broken. I reverted some commits to make cryptfs_hw build, but I'm not sure if that works. Do not try it.
2. SELinux is permissive, and init allows service without a SELinux domain to start.
3. GPS may take longer to obtain a position fix. (yes it's working... sorry for the misunderstanding)
4. Only Launcher2 is included. You may install a new one as you like.
5. No LiveDisplay and gestures except DT2W (DT2W can not be turned off via Settings app for now) Color calibration is possible, see FAQ below.
6. Default input method could be broken. Be ready to "pm install your_ime.apk" in adb shell. Fixed in 20160828
7. com.qti.dpmserviceapp may produce continous FC. You can disable it via adb shell ("su -c pm disable com.qti.dpmserviceapp"). Removed in 20160828
8. Rotating screen while playing video can cause the display to "split" Fixed in 20160903
9. Camera service and media codecs all run in the same process, eliminating one of the security enhancements of Android N. May not be fixed until new HAL and blobs are available.
So the security improvements in Nougat are not making much difference in this only-a-taste ROM. If you rely on this, it would be better to wait for official releases.
FAQs:
1. Root / Gapps?
I'm using SuperSU 2.76 stable and OpenGapps 7.0 pico. They work without any issue.
If your contacts / calendars is not syncing, try the following steps:
1. Goto Settings > Apps, tap "Show system" in menu
2. Find "Google Contacts Sync", tap on it, tap "Permissions", turn on everything
3. Go back to Detail screen, clear its data
4. Go back to app list, clear "Contacts Storage"' data
5. Do the same for calendars (2-4)
6. Reboot
Click to expand...
Click to collapse
2. F2FS?
I did not test this myself... But kernel has support already (of cource, it's from CM) so you may have a try. Remember to backup!
EDIT: Some users reported that F2FS partitions are corrupted. If you are using F2FS, maybe you should wait.
Click to expand...
Click to collapse
3. Menu key / App switcher?
Menu key now acts as recents, since I don't think the former is as useful as the latter. And there is no more lag while tapping home button since we don't check for double tap anymore.
Click to expand...
Click to collapse
4. TWRP shows error?
If that's two lines of "log", you can safely ignore it.
If there is something else, please stop and post it here.
If you are using MultiROM, you may modify update-script. Read the first ~8 pages and you will find it.
Reference: I'm using official TWRP 3.0.2 w/o MultiROM This recovery didn't get replaced by stock one...
Click to expand...
Click to collapse
5. File manager (to install APKs)?
http://forum.xda-developers.com/showpost.php?p=68402423&postcount=73
Click to expand...
Click to collapse
6. Disable HW keys, enable soft keys, screen color calibration?
Disable HW keys: echo 0 > /proc/touchpanel/keypad_enable (needs repeat on reboot)
Enable soft keys: echo "qemu.hw.mainkeys=0 >> /system/build.prop (once)
Screen color calibration: echo "32768 31784 27852" > /sys/class/graphics/fb0/rgb (needs repeat on reboot, change the values as you need. This example is 100% R, 97% G, 85% B)
Optionally you can enable color enhancing: echo 1 > /sys/class/graphics/fb0/color_enhance
Click to expand...
Click to collapse
Screenshot spoiler
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Flashing Guide by @The Dork Knight Rises
In the 3rd post. Direct link: http://forum.xda-developers.com/showpost.php?p=68397804&postcount=3
Video hands-on by @savadam
https://www.youtube.com/watch?v=r54vWk-Azh8
Thanks for all your support!
Download:
20160919: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpAYWRKd1owSUNudEU Mirror 2: https://mega.nz/#!fEk1CTyJ!F8rdnqT_oiipP-tHCuzFGFvsQGmUV6LRaD2t81N2WIA
You can still use HALs from 20160906 if you want.
(And if you are posting this somewhere else, please include the HALs in your post)
Older versions:
20160918: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpAMWZ4OEx6Unp5bU0 Mirror 2: https://mega.nz/#!rdlkgboI!LQuFDtcppbizC_7Tfww1uWAmhw-lYuxjAlrhg9Z0tuQ
20160910: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpAdGVTV3V0ekZaWHM Mirror 2: https://mega.nz/#!XEsTESpR!QDa7he2jdPCeIsbMY1vJAlCZ0RokAKV0IdtyuB0R-yc
20160906: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpAWHNFb0xyYlBZM3c Mirror 2: https://mega.nz/#!zBVX1DTZ!S-LnpIEgJqn1r7So6QmEoD_APUqDnp93XbP-Ug__XBk
CAF and original AOSP HALs: https://drive.google.com/open?id=0BwkmhbR5VHpAaGdCQmxDUWgxQlU
Note on the HALs:
AOSP HALs (msm8996 display + msm8974 media) can not record screen, but they "seem" to make the system smoother. (msm8974 display HAL cannot be used because it corrupts the display when rotating screen with video playing)
CAF HALs (both based on vanilla CAF LA.BF.1.1.3_rb1.13) can record screen but "seem" not to be so efficient as AOSP ones.
The HAL included in the ROM are the AOSP variant.
20160903: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpATlN5T29WTS01Qkk Mirror 2: https://mega.nz/#!OcFlTDDK!EYiNpfE-9Pxx2wu4Oto7kO_oevfe0bMkXOTdhP1HDZc
20160831: Mirror 1: https://drive.google.com/open?id=0BwkmhbR5VHpAVE1WR2xYd180MzA Mirror 2: https://mega.nz/#!jE92iSAD!pl0NMU6PPY3UNXE5DTDBKLUd4sFLG6fNTaUUMI0xdzg
20160828: Mirror 1: https://mega.nz/#!XdlXFDBQ!p7E0N64IEkGHn4GBzOZQDTCgR4KdD00O0dRwJlEnvcw Mirror 2: https://drive.google.com/open?id=0BwkmhbR5VHpAczA2T2g0RUZRS3c
20160827: https://drive.google.com/open?id=0BwkmhbR5VHpAUVdWUHNlc0lHZWs
Note: please read "known bugs" section before flashing! Also you can read the guide below.
When updating the ROM, just dirty-flash new build and Gapps (if you use them).
In order to prevent your recovery from being replaced by the stock one, flash SuperSU along with the ROM.
Sources:
Kernel: https://github.com/updateing/android_kernel_oneplus_msm8974/tree/nougat
Device: https://github.com/updateing/android_device_oneplus_bacon/tree/nougat
Build system: https://github.com/updateing/platform_build/tree/custom-kernel
And there are a lot more repos I didn't fork. The changes there as well as local_manifest are here:
20160918+ Check GitHub
20160910 https://drive.google.com/open?id=0BwkmhbR5VHpAcmo1RjhPd0N1c3c
20160906 No new patches except the HALs. For AOSP HALs, check previous patch archive and Sony's guide. For CAF HALs, just cherry-pick "Fix clang build" from CM.
20160903 https://drive.google.com/open?id=0BwkmhbR5VHpAQXFqZEJCT21UNDA
20160831 https://drive.google.com/open?id=0BwkmhbR5VHpASW54QnR4eGFlR1E
20160828 https://drive.google.com/open?id=0BwkmhbR5VHpAOEx2OWNYcE1xU2s
20160827 https://drive.google.com/open?id=0BwkmhbR5VHpALXdkNkptRnBLMkU
Changelog:
20160919
Fixed Fackbook crash by avoiding preloading libboringssl-compat.so (CM camera HAL is the only camera HAL that does not require this)
Updated BT configuration (please test if it has any side effect. Sometimes you need to search twice to find your Bluetooth gadgets.)
Tried to fix network location (added Google's network location provider)
20160918
Reverted to previous "stub" power HAL. May fix lagging and unusual power consumption noticed by some users.
Tried to fix NFC FW download mechanism. May fix non-working NFC for some users.
20160910
Updated to NRD90U (android-7.0.0_r6)
Switched to CM/QCOM power HAL. The original power HAL is more like a placeholder.
Now on Tap can be launched by long-pressing home button
Switchable WebView implementation, thanks to @fards here
Note:
1. If you are experiencing display issues (such as screen flicker with FLV SW decoding), try switching on "Disable HW Overlay" in Development Settings.
2. If you need multi-user feature, remove /system/priv-app/com.qualcomm.location. Otherwise the system will crash. It was accidentally added in this build.
20160906
Switched back to AOSP HALs to increase performance, but screen recording is broken again. You can choose CAF HALs listed above to fix that. Camcorder and HW encoding work with both variants, no need to worry.
Updated media profiles. Front camera knows that it is not capable of 1080p recording.
20160903
Fixed HW encoder and camcorder (they are different issues, though related) (and switched to CM13 media HAL)
Fixed display corruption while rotating screen with video playing (by switching to CM13 display HAL, don't know which lines of code fixed that)
DT2W can be turned off via Settings
Added Reboot option in power menu
20160831
Fixed crash in World Clock page when selecting countries/regions
Fixed hang in Developer Settings when the ROM is installed as secondary
Fixed crash when taking photos with HDR on
Added support for kexec
Added Stk
20160828
Fixed default input method FC
Remove com.qti.dpmservices to prevent FC
Dev: updated build system to finally automate everything
20160827
Initial build
Click to expand...
Click to collapse
Notes on the sources:
1. Build system produces correct boot.img in $OUT, but the boot image in OTA zip still has no DT included. Fixed in 20160828
2. Some fixes are really "dirty" (as I'm not able to find a proper way)...
3. Some JNIs fail to build (lots of C++ symbols no found). You may try linking C++ libs dynamically (c++_static -> c++_shared) to avoid this. See 20160828 patches, packages/inputmethods/LatinIME for example.
4. Some apps require android-8 ndk, but the earliest version in the tree is android-9. A symlink will do (or you can change the Android.mk in app) but I'm not really sure this will not introduce any bug.
5. Android N split mediaserver into multiple processes to improve security, such as cameraserver, mediacodec, etc. But camera blobs and old HALs were not designed like this. They assume they run in the same process, thus a buffer created by blobs are being used everywhere, which will cause illegal memory access under Android N. I reverted lots of patches about this, forcing camera and codec services to run in the mediaserver process as before - security compromised with functionality, again.
Hope you enjoy this.
I am going to try this out, thanks @updateing for your work:good:
If I could find fixes then I would send an pull request.
The All-In-One Post
Oh look at the time...it's flashy time already? XD
Screenshots:
(Layers themes work. Use Substratum app)
Guide to flashing this properly (TWRP v3.0.2-0):
(THIS GUIDE IS MAINLY FOR THE FIRST BUILD 20160827. AS I AM RUNNING IT SMOOTHLY, I DO NOT PLAN TO UPDATE TO 20160828, AS IT HAS SOME MINOR FIXES, ALREADY COVERED IN MY GUIDE.
IF HOWEVER, YOU'RE FLASHING 20160828 OR LATER BUILD, HERE'S WHAT YOU SHOULD DO DIFFERENTLY:
-Flashing Google keyboard is not mandatory, as default input mode has been fixed
-adb steps do not need to be performed as the com.qti.dpmserviceapp has been removed
-You probably shouldn't flash the SystemUI Tuner mod zip, as the SystemUI APK from previous build may not be compatible with new build. If you flash it on 28 build and have SystemUI FCs or missing SystemUI, just reflash ROM, and don't flash the mod.
REST OF THE GUIDE REMAINS THE SAME)
(This guide is for flashing as primary ROM without MultiROM. MultiROM guide by @7u5h4r: http://forum.xda-developers.com/showpost.php?p=68413163&postcount=242)
TL;DR version (that means short version)
http://forum.xda-developers.com/showpost.php?p=68552389&postcount=1172
Download ROM zip from OP and Google Keyboard flashable zip, as well as any of the zips I linked below.
Wipe your device (data, cache, dalvik/ART cache; preferably even system, just to be as "clean" as possible)
(NOTE ABOUT DIRTY FLASHING:
-If you dirty flash this ROM (eg. flashing newer build), you will need to flash GApps again along with the ROM zip as GApps are not preserved
-This ROM actually booted for me even on a dirty flash from an MM custom ROM, and as a result I didn't face a lot of the problems you'd face on clean flash (GApps crashes, continuous qti app FCs, etc)
But a lot of my apps were crashing until I reinstalled them, and in any case, it is not advised to dirty flash when coming from MM)
Flash ROM zip and keyboard zip, optionally any of the following addons (DO NOT FLASH GAPPS YET):
-SuperSU (v2.68+) for root
-Any of the mods I linked below
-Any other mods like Viper4Android etc (AT YOUR OWN RISK)
Boot into the ROM. you'll probably see a lot of crashes, ignore them, and just find a PC for the next step
(Optionally, you could try to enable Developer Options by tapping past the FC dialogs, once you have DevOps enabled, you'll see an option to mute FC notifications till next boot)
Using ADB on your PC, disable the com.qti.dpmserviceapp package by running following commands:
Code:
adb devices
You should see a device in the list of devices connected
Code:
adb shell
pm disable com.qti.dpmserviceapp
If you get error with permissions, you may need root. If your device is rooted:
Code:
su
pm disable com.qti.dpmserviceapp
(SKIP 6, 7 & 8 if you do not need Google services)
Now reboot into recovery and flash a compatible GApps package (USE 7.0 GAPPS ONLY)
Boot into ROM
Go to Settings>Apps
Find Google Play Services, and go to its Permissions. Enable essential permissions. Now Play Services won't keep crashing on you. Also find Google Contact Sync and give it permission to access Contacts.
Go to Settings>Accounts and add your Google account
Profit
Praise DuARTe
Hit Thanks if this helped
Here's some helpful zips for you guys!
My flashable zip to ENABLE Navbar/softkeys (same as the one on the MM thread) https://drive.google.com/open?id=0B2Y1syM7UNuDYVRhM3BTYVA3SXc
Flashable zip to DISABLE HW keys
https://drive.google.com/open?id=0B2Y1syM7UNuDSFZwUHNLQ0RfdXM
Flashable zip to ENABLE HW keys (revert changes made by zip above)
https://drive.google.com/open?id=0B2Y1syM7UNuDalVLVzd0SFdLekk
Flashable stock bootanimation (same as the one in MM thread; since this ROM doesn't really have a bootanimation and uses the basic fallback bootanimation)
https://drive.google.com/open?id=0B2Y1syM7UNuDelFPZVh6dmxSR2c
Flashable zip to ENABLE Hidden SystemUI Tuner Features (thanks to @AL_IRAQI, see his original guide here)
This one was tricky, my first time decompiling an APK. I was getting some crashes at first, but I think this ZIP should work fine (I tested it on a dirty flash, and it works)
https://drive.google.com/open?id=0B2Y1syM7UNuDd0JBV2ViMXl1bnc
Flashable Google Keyboard 5.1
https://drive.google.com/open?id=0B2Y1syM7UNuDbnBmdEtWZlRlNlk
Flashable Nexus Launcher (credits to uploader)
https://www.androidfilehost.com/?fid=24588232905722237
Replace the stock Power Menu with an extended custom power menu (thanks to @nofx161):
See his post
Link to app
Layers themes are supported, use Substratum app (Play Store link) to apply
(ROOT NEEDED)
NOTE: Themes made only for Substratum will not work (properly) as this ROM doesn't support Substratum (that will need patches to ROM source). Only which support RRO/Layers will work without any issues.
Wow! Great work
Subscribed!
thanks for your work dude
Cool, thanks, gonna try asap
Enviado desde mi A0001 mediante Tapatalk
Great! Thank u dev!
updateing said:
2. SELinux is permissive, and init allows service without a SELinux domain to start.
Click to expand...
Click to collapse
Which sepolicy did you use? I am porting to a different device and Im currently trying to fix neverallows which is painful but I think I merged a commit to qcom/sepolicy which allows domain to start (im not very good in sepolicy). Its based off Cyanogenmod qcom/sepolicy repo. If you want to take a look its here android_device_qcom_sepolicy-1 and I had to add one thing to platform_system_sepolicy. I hope we'll be able to fix sepolicy soon.
Awesome.... Downloading already.
Awesome! Has anyone tried If gapps work?
Flashed it. But i get a FC all the time
com.qti.dpmserviceapp has stopped.
I cant do anything..?
Deltastylez said:
Flashed it. But i get a FC all the time
com.qti.dpmserviceapp has stopped.
I cant do anything..?
Click to expand...
Click to collapse
Really sorry that I forgot this. You could do "pm disable com.qti.dpmserviceapp" in adb shell (su first if it asks so)
A fellow hamster I see! Nice one.
updateing said:
Really sorry that I forgot this. You could do "pm disable com.qti.dpmserviceapp" in adb shell (su first if it asks so)
Click to expand...
Click to collapse
I am kind of a newbie to ADB
Could you perhabs tell me how to? step a step?
Thanks!
Deltastylez said:
I am kind of a newbie to ADB
Could you perhabs tell me how to? step a step?
Thanks!
Click to expand...
Click to collapse
You may find a lot of adb tutorials around...
But if there is a mute option in the FC dialog, you can mute it and disable in Settings.
updateing said:
Really sorry that I forgot this. You could do "pm disable com.qti.dpmserviceapp" in adb shell (su first if it asks so)
Click to expand...
Click to collapse
updateing said:
You may find a lot of adb tutorials around...
But if there is a mute option in the FC dialog, you can mute it and disable in Settings.
Click to expand...
Click to collapse
well, getting this error
" Error: java.lang.SecurityException: Shell cannot change component state for com.qti.dpmserviceapp/null to 2 "
Never mind, fixed
updateing said:
You may find a lot of adb tutorials around...
But if there is a mute option in the FC dialog, you can mute it and disable in Settings.
Click to expand...
Click to collapse
i've tried through adb shell but it doesn't work shell cannot change component state for com.qti.dpmserviceapp/null to 2 moreover it is not possible to disable it in settings thank u for your job
anyone!! please any reviews??
Knew it wouldn't be long before the famous Bacon machine got that great taste of nougat :good:
holy crap holy crap
EVERYONE BOARD THE HYPE TRAIN! CHOO CHOO!

Categories

Resources