From bf227005629d838ceeaf4582d6e0dd68da7dd7b5 Mon Sep 17 00:00:00 2001 From: josch Date: Wed, 25 Jun 2014 12:41:14 +0200 Subject: [PATCH] initial commit --- charge-fso.sh | 137 ++++++++++++++++++++++++++++++++++++++++++++++ charge-joerg.sh | 15 +++++ charge-pancake.sh | 20 +++++++ charge-pyneo.sh | 11 ++++ n900-rootfs.sh | 121 ++++++++++++++++++++++++++++++++++++++++ notes | 2 + 6 files changed, 306 insertions(+) create mode 100644 charge-fso.sh create mode 100644 charge-joerg.sh create mode 100644 charge-pancake.sh create mode 100644 charge-pyneo.sh create mode 100644 n900-rootfs.sh create mode 100644 notes diff --git a/charge-fso.sh b/charge-fso.sh new file mode 100644 index 0000000..2b956ad --- /dev/null +++ b/charge-fso.sh @@ -0,0 +1,137 @@ +#/bin/bash +# Reset + +#echo -n Reset... +#i2cset -y -m 0x80 2 0x6b 0x04 80 +#echo -n Done. Sleep 1... +#sleep 1 +#echo -n Done. + +echo "Charger: " $(cat /sys/devices/platform/musb_hdrc/charger) + +# Disable charger for configuration: +i2cset -y 2 0x6b 0x01 0xcc # No limit, 3.4V weak threshold, enable term, charger disable + + +# Register 0x04 +# 8: reset +# 4: 27.2mV # charge current +# 2: 13.6mV +# 1: 6.8mV +# 8: N/A +# 4: 13.6mV # termination current +# 2: 6.8mV +# 1: 3.4mV +# 7-1250 6-1150 5-1050 4-950 3-850 2-750 1-650 0-550 +# 7-400 6-350 5-300 4-250 3-200 2-150 1-100 0-50 +i2cset -y -m 0xFF 2 0x6b 0x04 0x50; + +# Register 0x02 +# 8: .640 V +# 4: .320 V +# 2: .160 V +# 1: .080 +# 8: .040 +# 4: .020 (+ 3.5) +# 2: otg pin active at high (default 1) +# 1: enable otg pin +i2cset -y -m 0xfc 2 0x6b 0x02 0x8c; +# 4.2 = 3.5 + .640 + .040 + .02 = 8c +# 4.16 = 3.5 + .640V + .020 = 84 +# 4.1 = 3.5 + .320 + .160 + .08 + .04 = 78 +# 4.0 = 3.5 + .320 + .160 + .02 = 64 +# 3.9 = 3.5 + .320 + .080 = 50 + +# Register 0x1 +# 8: 00 = 100, 01 = 500, 10 = 800mA +# 4: 11 = no limit +# 2: 200mV weak threshold default 1 +# 1: 100mV weak treshold defsult 1 (3.4 - 3.7) +# 8: enable termination +# 4: charger disable +# 2: high imp mode +# 1: boost +i2cset -y 2 0x6b 0x01 0xc8; + +# Register 0x00 +# 8: Read: OTG Pin Status +# Write: Timer Reset +# 4: Enable Stat Pin +# 2: Stat : 00 Ready 01 In Progress +# 1: : 10 Done 11 Fault +# 8: Boost Mode +# 4: Fault: 000 Normal 001 VBUS OVP 010 Sleep Mode +# 2: 011 Poor input or Vbus < UVLO +# 1: 100 Battery OVP 101 Thermal Shutdown +# 110 Timer Fault 111 NA +i2cset -y 2 0x6b 0x00 0x00; + +echo -n "Charge parameters programmed. Sleep 1..." +sleep 1 +echo "Status: " $(i2cget -y 2 0x6b 0x00) +i2cset -y 2 0x6b 0x00 0x80 # timer reset +cat /sys/devices/platform/musb_hdrc/charger >/dev/null + +# Initialize variables +THROTTLE=0 +FULL=0 +MODE="STANDBY" +WALLCHARGER=0 + +# Assuming a nice round number 20mOhm for bq27200 sense resistor +RS=20 + +get_nac () +{ + NAC=$(i2cget -y 2 0x55 0x0c w) + NAC=$(($NAC * 3570 / $RS / 1000)) +} +get_rsoc () +{ + RSOC=$(i2cget -y 2 0x55 0x0b) + RSOC=$((RSOC)) +} +get_volt () +{ + VOLT=$(i2cget -y 2 0x55 0x08 w) + VOLT=$(($VOLT)) +} + +STATUS=$(i2cget -y 2 0x6b 0x00) +while true ; do + sleep 15; + STATUS=$(i2cget -y 2 0x6b 0x00) + #echo $STATUS + + i2cset -y -m 0x80 2 0x6b 0x00 0x80; # timer reset + get_nac + get_rsoc + get_volt + + if [ $MODE == "STANDBY" ] ; then + if [ $STATUS == 0x10 ] || [ $STATUS == 0x90 ] ; then + MODE="CHARGING" + echo $(date) "standby -> CHARGING. Current available capacity: " $NAC "mAh" >> /home/user/MyDocs/charger.log + WALLCHARGER=$(cat /sys/devices/platform/musb_hdrc/charger) + fi + fi + if [ $MODE == "CHARGING" ] ; then + if [ $STATUS == 0x00 ] ; then + MODE="STANDBY" + echo $(date) "charging -> STANDBY. Current available capacity: " $NAC "mAh" >> /home/user/MyDocs/charger.log + WALLCHARGER=0 + # This will stop USB from eating power as long as you haven't plugged it into a PC + echo 0 > /sys/devices/platform/musb_hdrc/connect + fi + fi + + if [ $STATUS == 0xa0 ] && [ $FULL == 0 ] ; then + echo "Charge done" + echo $(date) "FULL: " $NAC "mAh" >> /home/user/MyDocs/charger.log + FULL=1 + fi + if [ $STATUS == 0x00 ] && [ $FULL == 1 ] ; then + FULL=0 + fi + echo Status: $STATUS Mode: $MODE Full: $FULL WallCharger: $WALLCHARGER Battery Voltage: $VOLT NAC: $NAC Battery level: $RSOC % +done diff --git a/charge-joerg.sh b/charge-joerg.sh new file mode 100644 index 0000000..96df79f --- /dev/null +++ b/charge-joerg.sh @@ -0,0 +1,15 @@ +i2cset -y -m 0x77 2 0x6b 0x04 0xc9; +# next register 0x03 is device ID, always 4b and r/o; so we skip to 0x04 +i2cset -y -m 0xff 2 0x6b 0x02 0x8c; +# 0x8c = 3v5 + .640 + .040 + .020 = 4V200, BE CAREFUL and DON'T CHANGE +# unless you know what you're doing. 4V2 is ABS MAX! +i2cset -y -m 0xff 2 0x6b 0x01 0xc8; +i2cset -y -m 0xc0 2 0x6b 0x00 0x00; + +# tickle watchdog, while status indicates 'charging from wallcharger' +while [ $(i2cget -y 2 0x6b 0x00) = 0x90 ] ; do + sleep 28; + # reset watchdog timer: + i2cset -y -m 0x80 2 0x6b 0x00 0x80; +done +echo "charging finished, status(reg0)=$(i2cget -y 2 0x6b 0x00)" diff --git a/charge-pancake.sh b/charge-pancake.sh new file mode 100644 index 0000000..de67690 --- /dev/null +++ b/charge-pancake.sh @@ -0,0 +1,20 @@ +i2cset -y -m 0x77 2 0x6b 0x04 0xc9; +status=$(i2cget -y 2 0x6b 0x00) +echo status=$status + +# next register 0x03 is device ID, always 4b and r/o; so we skip to 0x04 +i2cset -y -m 0xff 2 0x6b 0x02 0x8c; +# 0x8c = 3v5 + .640 + .040 + .020 = 4V200, BE CAREFUL and DON'T CHANGE +# unless you know what you're doing. 4V2 is ABS MAX! +i2cset -y -m 0xff 2 0x6b 0x01 0xc8; +i2cset -y -m 0xc0 2 0x6b 0x00 0x00; + +# tickle watchdog, while status indicates 'charging from wallcharger' +#while [ $(i2cget -y 2 0x6b 0x00) = 0x90 ] ; do +while [ $(i2cget -y 2 0x6b 0x00) = 0x10 ] ; do + echo charging... + sleep 28; + # reset watchdog timer: + i2cset -y -m 0x80 2 0x6b 0x00 0x80; +done +echo "charging finished, status(reg0)=$(i2cget -y 2 0x6b 0x00)" diff --git a/charge-pyneo.sh b/charge-pyneo.sh new file mode 100644 index 0000000..e4ae429 --- /dev/null +++ b/charge-pyneo.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +i2cset -y -m 0x77 2 0x6b 0x04 0x50; +i2cset -y -m 0xff 2 0x6b 0x02 0x8c; +i2cset -y -m 0xff 2 0x6b 0x01 0xc8; +i2cset -y -m 0xc0 2 0x6b 0x00 0x00; + +while true ; do + i2cset -y -m 0x80 2 0x6b 0x00 0x80; + sleep 28; +done diff --git a/n900-rootfs.sh b/n900-rootfs.sh new file mode 100644 index 0000000..501e053 --- /dev/null +++ b/n900-rootfs.sh @@ -0,0 +1,121 @@ +#!/bin/sh -e + +ROOTDIR="n900-chroot" + +PACKAGES="ifupdown,openssh-server,udev,procps,netbase,vim,console-setup-mini,man-db,iproute" +PACKAGES="$PACKAGES,module-init-tools,wget,openssh-client,locales,sysklogd,klogd,input-utils,dnsutils" +PACKAGES="$PACKAGES,alsa-base,ntpdate,debconf-english,screen,less,console-tools,iputils-ping,vpnc,rsync" +PACKAGES="$PACKAGES,i2c-tools,watchdog" +cdebootstrap --flavour=minimal --include=$PACKAGES sid "$ROOTDIR" + +#cp -a /lib/modules/2.6.28-omap1/ "$ROOTDIR/lib/modules/" +#cp -a /lib/firmware/* "$ROOTDIR/lib/firmware/" +#curl http://my.arava.co.il/~matan/770/n900/power_supply.ko > $ROOTDIR/lib/modules/2.6.28-omap1/power_supply.ko +#curl http://my.arava.co.il/~matan/770/n900/bq27x00_battery.ko > $ROOTDIR/lib/modules/2.6.28-omap1/bq27x00_battery.ko +curl http://mister-muffin.de/n900/modules-2.6.28-omap1.tar.gz | chroot $ROOTDIR tar -C /lib/modules/ -xzf - +curl http://mister-muffin.de/n900/firmware.tar.gz | chroot $ROOTDIR tar -C /lib/ -xzf - + +sed -i 's/\(PermitEmptyPasswords\) no/\1 yes/' $ROOTDIR/etc/ssh/sshd_config +sed -i 's/\(root:\)[^:]*\(:\)/\1\/\/plGAV7Hp3Zo\2/' $ROOTDIR/etc/shadow + +chroot $ROOTDIR useradd user -p //plGAV7Hp3Zo -s /bin/bash --create-home + +cat > $ROOTDIR/etc/watchdog.conf << __EOF__ +watchdog-device = /dev/twl4030_wdt +interval = 10 +realtime = yes +priority = 1 +__EOF__ + +sed -i "s/\(FSCKFIX=\)no/\1yes/" $ROOTDIR/etc/default/rcS + +chroot $ROOTDIR apt-get update + +chroot $ROOTDIR apt-get install xserver-xorg-video-omap3 xserver-xorg-input-evdev xserver-xorg-input-tslib libts-bin nodm + +cat > $ROOTDIR/etc/default/nodm << __END__ +NODM_ENABLED=true +NODM_USER=user +NODM_XINIT=/usr/bin/xinit +NODM_FIRST_VT=0 +NODM_XSESSION=/etc/X11/Xsession +NODM_X_OPTIONS='-nolisten tcp' +NODM_MIN_SESSION_TIME=60 +__END__ + +cat > $ROOTDIR/etc/X11/xorg.conf << __EOF__ +Section "Monitor" + Identifier "Configured Monitor" +EndSection + +Section "Screen" + Identifier "Default Screen" + Device "Configured Video Device" +EndSection + +Section "Device" + Identifier "Configured Video Device" + Driver "omapfb" + Option "fb" "/dev/fb0" +EndSection + +# this is only needed when using the maemo kernel +Section "InputClass" + Identifier "Keyboard" + MatchProduct "omap_twl4030keypad" + MatchDevicePath "/dev/input/event*" + Option "XkbModel" "nokiarx51" + Option "XkbLayout" "de" +EndSection +__EOF__ + +cat > $ROOTDIR/etc/network/interfaces << __EOF__ +auto lo +iface lo inet loopback + +# usb +auto usb0 +iface usb0 inet static + address 192.168.2.2 + network 192.168.2.0 + netmask 255.255.255.0 + broadcast 192.168.2.255 + gateway 192.168.2.1 + dns-nameservers 192.168.2.1 + dns-search universe + +# disable automatic stuff for other devices (so no net.agent script running for them) +noauto phonet0 upnlink0 wlan0 wmaster0 +__EOF__ + +cat > $ROOTDIR/etc/default/keyboard << __EOF__ +XKBMODEL="nokiarx51" +XKBLAYOUT="de" +XKBVARIANT="" +XKBOPTIONS="" +__EOF__ + +cat > $ROOTDIR/etc/modules << __EOF__ +bq27x00_battery +g_nokia +__EOF__ + +cat > $ROOTDIR/root/charging.sh << __EOF__ +#!/bin/sh + +i2cset -y -m 0x77 2 0x6b 0x04 0x50; +i2cset -y -m 0xff 2 0x6b 0x02 0x8c; +i2cset -y -m 0xff 2 0x6b 0x01 0xc8; +i2cset -y -m 0xc0 2 0x6b 0x00 0x00; + +while true ; do + i2cset -y -m 0x80 2 0x6b 0x00 0x80; + sleep 28; +done +__EOF__ + +echo -n "14188 155 -3112200 52 -8740 33129794 65536" > $ROOTDIR/etc/pointercal + +chroot $ROOTDIR apt-get remove cdebootstrap-helper-rc.d + +chroot $ROOTDIR apt-get clean diff --git a/notes b/notes new file mode 100644 index 0000000..012de3b --- /dev/null +++ b/notes @@ -0,0 +1,2 @@ +http://tablets-dev.nokia.com/nokia_N900.php +http://tablets-dev.nokia.com/maemo-dev-env-downloads.php