도전2022

Hacking the Toshiba AC100 본문

참고자료

Hacking the Toshiba AC100

hotdigi 2010. 11. 2. 15:06
Hacking the Toshiba AC100

http://tosh-ac100.wetpaint.com/page/Peripheral+Control+(ec_odm)

Peripheral Control (ec_odm)This is a featured page
/dev/ec_odm is a device that is OEM specific, so the following info will be AC100/AZ100 specific.
Through /dev/ec_odm you can control many things like touchpad, or leds. It doesn't seem to exist
in nVidia's sources and ATM no toshiba sources.

Files in /proc/test_program/* (see below) provides a high-level access to EC-ODM.


You can access /dev/ec_odm with the program test-ec (sourcecode: test-ec.c).
Usage: ./test-ec 0xc0043006 2 (to turn off backlight)

So, there are multiple ioctl IDs, and all of these commands take an int as parameter

Tested parameters:


LEDs: 0xc0043002 . This handles notification (side) LED.
Values from 0 to 7 are different effects
8 disables the led.

TouchPad: 0xc0043003 . This disables/enables touchpad, and touchpad scroll.
0 get touchpad status
1 enables touchpad
2 disables touchpad
3 get scroll status
4 enable scroll
5 disable scroll

Only 5/4 seem to work accurately.

Do not use the backlight command before the previous backlight command has finished. Doing so may cause wrong behaviour.
Append
(wtf is that name?) : 0xc0043006 :
0 is called shutdown but doesn't seem to do anything
1 enables it
2 turn off the backlight

Untested parameters:


EC: 0xc0043004
getRecoveryPin: 0
setRecoveryPin: enable=1,disable=2
setLidControl: enable=0xc, disable=0xd
setPowerButtonControl: enable=0xa; disable=0xb

Keyboard: 0xc0043001
getKeyboardLayout: 1
setKeyboardLayout: unknown

DMI: 0xc0043000
setTestProgramByte
getTestProgramByte
setWifiChannelSet
getWifiChannelSet
getKeyboardInfo
setKeyboardInfo
getOEMStrings
getUUID
getSerialNumber
getVersion
getProductName
getManufacture
setOEMStrings
setUUID (!!!)
setSerialNumber (!!!)
setVersion
setProductName
setManufacture

UOC: (reversed from uoc binary): 0xc0043005
enable usb over-current (6)
enable power button event (0,5) (seems to be *2* ints ??)
enable ac event(0,1)
enable power button wakeup event (9, 10)
enable lid switch (wakeup event?) (9, 12)
enable home key (9, 14)
enable led switch(0,3)



/proc/test_program:

ec_timer
batteryCellNumber
batteryManufacturer
battery
tpwheel => echo 1 or 0 into for enabling / disabling touchpad
wheel
edid
suspend
hdmi
wifi3g => echo 1 or 0 into for enabling / disabling Wifi
coldboot
ecctl
loopback
light
led
disable_button
lsensor
usb
SD-test
uuid
ec_version