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
29 fb
89 i2c
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
216 rfcomm
250 mux
251 ttyIPC
254 rtc
Block devices:
1 ramdisk
259 blkext
179 mmc
# cat /proc/misc
53 network_throughput
54 network_latency
55 cpu_dma_latency
56 eac
57 alarm
58 log_radio
59 log_events
60 log_main
61 binder
223 uinput
134 apm_bios
235 autofs
62 ashmem
63 rfkill
rm /dev/binder /dev/log/main /dev/log/radio /dev/log/events /dev/alarm /dev/ashmem /dev/eac
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
busybox mknod /dev/ashmem c 10 62
busybox mknod /dev/eac c 10 56ň
veci v /dev/ vytvára kernel? init?, malo by treba teda spraviť iba logové
cat /sys/class/input/event1/dev
13:65
busybox mknod /dev/input/event1 c 13 65
uinput to má rovnako
busybox mknod /dev/input/event4 c 13 <64 .. 255>
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, zrefaktoruvaný openbinder funguje ale vraj pľuje chyby do dmesgu, google binder nehrozí
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: exkluzívne IBA /dev/event0, ďakujem Google za tento super výmysel
fb: /dev/fb0, page flipping nevyžadovaný
lowmemorykiller: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system, log_events na m1 nepoužívaný
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libhtc-ril, natívny libreference-ril alebo javový SimulatedCommands (vyžaduje VYMAZAŤ ANDROID_USE_RIL z /etc/init.rc)
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 póvodný openbinder, funguje aj bez neho na úkor stability, zrefaktoruvaný openbinder funguje tiež, google binder nehrozí
alarm driver nevyžadovaný ale bez neho AlarmService furt vykrikuje že pristupuvaný dev node (/dev/alarm) neni písací stroj
input: možno už klasika /dev/input/event*, alternatívne iba /dev/event0, ale nedúfam
fb: /dev/fb0, page flipping nevyžadovaný
lowmemorykiller: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system, log_events na m1 nepoužívaný
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 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, zrefaktoruvaný openbinder by mal funguvať ale nevím či by to pluvalo chyby, google binder nehrozí
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 nevyžadovaný
lowmemorykiller: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system
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, AudioHardwareStub ak eac chýba, AudioHardwareHTC za normálnych okolností
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: póvodný openbinder je moc starý pre M4, multiprocessing teda potrebuje zrefaktoruvaný google openbinder, funguje aj bez neho na úkor stability, google binder nehrozí
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: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system
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, AudioHardwareStub ak eac chýba, AudioHardwareHTC za normálnych okolností a AudioHardwareGeneric ak je zapatý ro.kernel.qemu
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: póvodný openbinder je moc starý pre M5, multiprocessing potrebuje zrefaktoruvaný google openbinder, funguje aj bez neho na úkor stability, google binder nehrozí
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: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system
wifi: načítavaní a odnačítavaní "/system/wifi/acx.ko" kernel modulu
RIL: natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril)
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 z kombinácie /sys/class/powersupply/ac/online, powersupply/usb/online a potom nodov powersupply/battery/present, capacity, batt_vol, batt_temp, status, health a technology
binder: póvodný a zrefaktoruvaný openbinder asi nemá šancu funguvať, multiprocessing teda potrebuje google binder, alternatívne 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: stačí z 1.0_r1 (alebo novšého jadra) aj keď hlási deprekuvané mená procfs node-ov
logger: driver z 1.0_r1 stačí, teoreticky vypať log_system
wifi: načítavaní a odnačítavaní "/system/lib/modules/wlan.ko" kernel modulu + rozumnejšé funkcie
RIL: natívny libreference-ril alebo javový SimulatedCommands (ro.radio.noril)
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)?
W/MemoryDealer( 813): madvise(0x44423000, 151552, MADV_REMOVE) returned Function not implemented
MemoryDealer potrebuje SHMEM a ASHMEM
/dev/eac je prežitek z OMAPu kedy EAC znamenalo Enhanced Audio Controller, tento driver HTC implementuvalo jako modul do kernelu
toolboxový cat /proc/kmsg dokáže kontinuálne čítať na štýl "dmesg -w"
init binárka na M1 nečistí /dev/ takže napríklad pri zmene kernelu staré character/block dev node súbory ostávajú postarom a treba ich robiť odznova
runtime na M1 je neskutočne spomalený (póvodný openbinder štartuje 5 minút, zrefaktoruvaný až 8)
init na M1 negeneruje dev nody pre alsu, OSS a kamarátov (treba busybox mknod /dev/dsp c 14 3 a busybox mknod /dev/controlC0 c 116 0)
init:
na m1: nedokáže vygeneruvať nové /dev/ nody pre tí čo už existujú, negeneruje OSS/ALSA nody
na m2: nedokáže vygeneruvať nové /dev/ nody pre tí čo už existujú, OSS/ALSA generuje
na m5: vygeneruje nové ak boli generuvané initom, ináč neháva customowe ak boli
na 0.9: vymazáva existujúce customové
ďalšá smíšnota Androidového initu, čo sa aspoň m4/m5 týka, mmcblk generuje jak character device nody namísto blockových keré treba
M2 má SQL database chyby?


