Výskumný ústav archaického Androidu pred verziou 1.0_r1

softwareové záležitosti, systémové záležitosti, reversuvačky softwareovej úrovne a doví ešte čo
Post Reply
User avatar
Morc Offline
Posts: 202
Joined: Fri Jul 19, 2024 12:23 pm
Description: 21 | tatar z Biskupovej

Ak som sa volade omýleu tak na mňa kričte.
Contact:

Výskumný ústav archaického Androidu pred verziou 1.0_r1

Post by Morc »

bude tu bordel chaos. zaťál.

kernel research:
https://github.com/tipnispranav/android ... sh-3.4-rt/
https://github.com/OpenEZX/motorola-2.4 ... 11.10.11R/
https://github.com/aicjofs/android_kern ... 05E-misc.c
https://github.com/OpenEZX/openezx-wiki ... er/Call.mw
https://github.com/ExorEmbedded/android ... tor.c#L124
https://web.archive.org/web/*/http://pe ... enezx.org/*

extract:
mkdir ramdisk
cd ramdisk
gunzip -c ../ramdisk.gz | cpio -idmv

mkdir userdata
cd userdata
unyaffs ../userdata.img

mkdir system
cd system
unyaffs ../system.img

ak system nejde rozpakuvať kóli rozmrdanému yaffs dumpu:
naštartuvať emulátor s SD kartou (emulator -sdcard sdcard.img)
adb push busybox /data/tmp/busybox
adb shell
cd /data/tmp
chmod 777 busybox
./busybox tar -cvf /sdcard/m2_system.tar /system
exit
adb pull /sdcard/m2_system.tar

cat /proc/bus/input/devices

I: Bus=0019 Vendor=0001 Product=0002 Version=0100
N: Name="pcap-touchscreen"
P: Phys=ezxts/input0
S: Sysfs=/devices/platform/ezx-pcap/pcap-ts/input/input1
U: Uniq=
H: Handlers=event1
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003

cat /proc/devices

Character devices:
1 mem
2 pty
3 ttyp
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
14 sound


cat /sys/class/input/event1/dev
13:65

busybox mknod /dev/input/event1 c 13 65


rm /dev/binder /dev/log/main /dev/log/radio /dev/log/event /dev/log/events /dev/alarm
busybox mknod /dev/binder c 10 61
busybox mknod /dev/log/main c 10 60
busybox mknod /dev/log/radio c 10 58
busybox mknod /dev/log/events c 10 59
busybox mknod /dev/alarm c 10 57

uinput
busybox mknod /dev/input/event4 c 10 223


android m1 (htc-20645.0.8.0.0):
CONFIG_OABI_COMPAT vyžaduvaný lebo Android nebol EABI až do m3
vibruvák: libhardware.so > vibrator_on/vibrator_off > sendit(0)/sendit(1) > "/dev/event0" type: 0x20012 value: 1/0
LCD backlight a tlačítka: libhardware.so > set_light_state(char a1, unsigned int a2) > "/dev/event0" a1: 1/2/3 a2: 0/1/2/3 (hhhhh chaos)
zvuk: /dev/eac
kamera: /dev/cam + CamAPI-2 | libs/hardware/camera/camera_omap850
bluetooth: klasika dbus+bluez, /system/bin/hdiattach a /system/bin/hcid v /etc/init.rc
power (wakelock) driver s /sys/android_power/battery_level, /sys/android_power/battery_level_scale, /sys/android_power/battery_level_raw /sys/android_power/charging_state ale neni vyžadovaný
binder: multiprocessing potrebuje póvodný openbinder, funguje aj bez neho na úkor stability
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/fb0, page flipping zatiaľ nevyžadovaný
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libhtc-ril, natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril)

android m2 (htc-29386.0.9.0.0):
vibruvák: libhardware.so > vibrator_on/vibrator_off > sendit(0)/sendit(-1) > "/sys/devices/platform/sardine-vibrator/enable" value: "%d\n"
LCD backlight a tlačítka: libhardware.so > set_light_state(char a1, unsigned int a2) > /dev/event0 (ale %d je nasilu 0) a1: 1/2/3 a2: 0/1/2/3 (hhhhh chaos)
zvuk: /dev/eac
kamera: omap850_camera_driver alebo stub_camera_driver ak init pre omapový krachne
bluetooth: klasika dbus+bluez, /system/bin/hdiattach a /system/bin/hcid v /etc/init.rc
power (wakelock) driver s /sys/android_power/battery_level, /sys/android_power/battery_level_scale, /sys/android_power/battery_level_raw /sys/android_power/charging_state ale neni vyžadovaný
binder: multiprocessing potrebuje zrefaktoruvaný google openbinder, funguje aj bez neho na úkor stability
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/fb0, nevím ešte
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril alebo crash inakšého RILu?)


android m3-rc37:
vibruvák: libhardware.so > vibrator_on/vibrator_off > sendit(0)/sendit(-1) > "/sys/devices/platform/sardine-vibrator/enable" value: "%d\n"
LCD backlight a tlačítka: libhardware.so > set_light_state(char a1, unsigned int a2) > /dev/input/event%d (ale %d je nasilu 0) a1: 1/2/3 a2: 0/1/2/3 (hhhhh chaos)
zvuk: /dev/eac
kamera: stub_camera_driver (ro.kernel.qemu = yes)
bluetooth: klasika dbus+bluez, /system/bin/hdiattach a /system/bin/hcid v /etc/init.rc
power (wakelock) driver s /sys/android_power/battery_level, /sys/android_power/battery_level_scale, /sys/android_power/battery_level_raw /sys/android_power/charging_state ale neni vyžadovaný
binder: multiprocessing potrebuje zrefaktoruvaný google openbinder, funguje aj bez neho na úkor stability
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/fb0, nevím ešte
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril)

android m4 (engineering):
vibruvák: libhardware.so > vibrator_on/vibrator_off > sub_A9C03E14(0)/sub_A9C03E14(-1) > "/sys/devices/platform/android-vibrator/enable" value: "%d\n"
LCD backlight a tlačítka: libhardware.so > set_light_state(char a1, unsigned int a2) > /dev/input/event%d (ale %d je nasilu 0) a1: 1/2/3 a2: 0/1/2/3 (hhhhh chaos)
lampáš: /sys/devices/platform/android-spotlight/enable
zvuk: /dev/eac
kamera: omap850_camera_driver (+ /dev/cam) alebo stub_camera_driver (ro.kernel.qemu = yes)
bluetooth: klasika dbus+bluez, /system/bin/hdiattach a /system/bin/hcid v /etc/init.rc
power (wakelock) driver s /sys/android_power/battery_level, /sys/android_power/battery_level_scale, /sys/android_power/battery_level_raw /sys/android_power/charging_state ale neni vyžadovaný
binder: multiprocessing potrebuje zrefaktoruvaný google openbinder, funguje aj bez neho na úkor stability
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/graphics/fb0 alebo /dev/fb0, nevím ešte
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libhtc-ril, natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril)


android m5:
vibruvák: libhardware.so > vibrator_on/vibrator_off > sub_A9C03E14(0)/sub_A9C03E14(-1) > "/sys/class/timed_output/vibrator/enable" value: "%d\n"
LCD backlight a tlačítka: libhardware.so > set_light_state(char a1, unsigned int a2) > /sys/class/leds/keyboard-backlight/brightness, /sys/class/leds/lcd-backlight/brightness, /sys/class/leds/button-backlight/brightness
lampáš: /sys/class/leds/spotlight/brightness
blesk: /sys/class/timed_output/flash/enable
zvuk: /dev/eac
kamera: omap850_camera_driver (+ /dev/cam) alebo stub_camera_driver (ro.kernel.qemu = yes)
bluetooth: klasika dbus+bluez, /system/bin/hdiattach a /system/bin/hcid v /etc/init.rc
power (wakelock) driver s /sys/android_power/battery_level, /sys/android_power/battery_level_scale, /sys/android_power/battery_level_raw /sys/android_power/charging_state ale neni vyžadovaný
binder: multiprocessing potrebuje zrefaktoruvanž google openbinder, funguje aj bez neho na úkor stability
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/graphics/fb0, page flipping treba
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: libreference-ril

android 0.9:
senzory: funkcie zjavne vyklemuvané, bez obsahu
vibruvák: libhardware.so > vibrator_on/vibrator_off > sub_A9C050A4(0)/sub_A9C050A4(-1) > "/sys/class/timed_output/vibrator/enable" value: "%d\n"
LCD backlight a tlačítka: libhardware.so > set_light_brightness(char a1) > /sys/class/leds/keyboard-backlight/brightness, /sys/class/leds/lcd-backlight/brightness, /sys/class/leds/button-backlight/brightness
lampáš: /sys/class/leds/spotlight/brightness
blesk: /sys/class/timed_output/flash/enable
zvuk: /dev/eac
kamera: volade vyťáhnutá mimo libhardware.so
bluetooth: klasika dbus+bluez, /system/bin/hdiattach v /etc/init.rc
power (wakelock) driver neni vyžaduvaný, ale potom Android plače na wakelocky. baterka leze už ze /sys/class/powersupply/ac, powersupply/usb a powersupply/battery
binder: multiprocessing potrebuje binder, možno funguje aj bez neho
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: klasika /dev/input/event*
fb: /dev/graphics/fb0, page flipping treba
lowmemorykiller: mal by stačiť ten z 1.0_r1 (alebo novšého jadra) aj keď tuším hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_main
wifi: načítavaní a odnačítavaní "/system/lib/modules/wlan.ko" kernel modulu + rozumnejšé funkcie
RIL: libreference-ril


vibruvák používa princípy timed_outputu, -1 je nekonečno, 0 až 2147483647ms je čas toho jak dlho má drnčať, (m4 relevantné: zvoneňá v nastaveňách, notifikácie a voice dialer pri otvorení používajú vibruvák, ale taký alarmuvač na budíky nie)

AudioFlinger dokáže vystubuvať audio funkcie ak /dev/eac chýba

libreference-ril je referenčná implementácia RILu kerú zastupuje buď port na kerom je otvorený server GSM modemu (nc -l -p 5554) alebo /dev/ttyčko s modemom. Implementácia by mala byť na jednoduchej úrovni, robí to samozrejme ATčkové príkazy
exec /system/bin/rild -l /system/lib/libreference-ril.so -- -p 5554
exec /system/bin/rild -l /system/lib/libreference-ril.so -- -d /dev/omap_csmi_tty0

SimulatedCommands vyzíra že neví nič (mimo oklamávky že máš internet a mimo spoofu karty + odchádzajúcich hovorov), MMS unit testy voláko pošlú rozbitú MMSku, SMSky cez henten GSM RIL nejdú a nedajú sa nijak ani poslať na telefón

quake jak binárka nerozumí doublebufferingu

"adb pull /dev/fb0 && ffplay -f rawvideo -pixel_format rgb565le -video_size 240x640 fb0"

android emulátor obsahuje internú konzolu cez telnet, to je napojené na goldfish_tty (/dev/ttyS0) cez hento leze GSM emulátor na strane qemu emulátora kerý spracuváva AT príkazy vylízajúce z libreference-rilu

bootanim0.raw a bootanim1.raw sú dva rozdielne zvuky (unsigned 8-bit pcm, 44100Hz, mono) z framekeré vyzírajú byť nepoužité

Android M1 má ve framework-res.apk zabunnuté assety s "_lg" suffixom ve vyššom rozlíšení. Možno volačo pre ten LG wedge (later)?
Image
Post Reply