Hardware/N900/TODO
From freesmartphone.org
Newer TODO
- add a newer kenrel from meego
Make work all the hardware with the newer kernel and other works:
- bluetooth -> wait for meego
- camera: makes gstreamer work(mplayer already works)
- FM receiver : re-test
- FM transmitter : re-test
- make sound work better during calls
- renice enlightenment to -2
- make usb0 work out of the box
- change rules.yaml to reflect the led's name changes
- add charger rapid charging in the fso plugin(0x90 rapid charging)
Modem work:
- fix 3g support(auth failure for me => add pn-pep loading in the n900 machine config)
- add SMS
- add phonebook
- add USSD
Kernel work:
- make the microsd be /dev/mmcblk1p1 and the onenand be /dev/mmcblk0p1
- kexecboot: fix the one minute delay betweekn kexec -e and the kernel booting
Less urgent TODO
- automatic powering down the display and the touchscreen when the sensor detect something too close from the screen,usages:
- consume less power and make the battery last longer, specially when you have something like a CP-408
- could be used when phonecalls will work(or for SIP calls)
- automatic keyboard illumination(keyboard lights) like for the htcdream (integrate in openembedded) (repair it)
- oeventsd - keyboard slider, headphones handling
- accelerometer
- we could adapt(from spi to i2c) the freerunner driver which is an input device node, which would give us compatibility with existing applications(the n900 driver displays the values in /sys/class/i2c-adapter/i2c-3/3-001d)
- The bugview has an i2c LIS302DL, it could be interesting to look at drivers/bmi/pims/lcd/acc.c,because they use input device nodes
- xrandr rotation(can be a long work, as it require to modify xf86-video-omapfb)
- button handling in e and phonefsod
- provide 0xFFFF with SHR
- on-screen keyboard (it's really annoying in the way it works now)
- mokomaze resolution issue,(also depend on accelerometers)
- backlight - dynamic content control(?)
- photocamera app
- flash control(uses ioctl):
- I'm unsure if it should be left as-is and handled by fso or converted to the kernel led API
- some safety precautions should be taken
- revamped suspend handling - make use from OMAPs zero clock rather than suspend
- keyboard
- fix italian layout(up/down key don't work in gtk+,but the other keys like the numbers or -_* etc... work)
- alarms
Urgent
- prevent speakers destruction:
<DocScrutinizer> mickey_bbl: ([2010-12-12 15:53:19] <mickeyl> good volume) BEWARE! N900 has a class-D amp without any highpass filter from ADC to speakers - I.E. not DC/LF rejection. Nokia had to implement a last minute hotfix in PA, to avoid mass speaker suicide <mrmoku> DocScrutinizer: ohh :/ <DocScrutinizer> s/ADC/DAC <GNUtoo|laptop> so we should fix the kernel? <GNUtoo|laptop> or was it hotfixed in later kernels? <DocScrutinizer> errr, that's hardly kernel related <DocScrutinizer> it's a filter used in PA stack <GNUtoo|laptop> it's hardware related? <GNUtoo|laptop> ok <GNUtoo|laptop> but we use alsa <DocScrutinizer> closed blob >:-( <GNUtoo|laptop> it has been freed ? <GNUtoo|laptop> I saw the pulseaudio sources for meego <DocScrutinizer> there's a digital hardware filter inside the codec <DocScrutinizer> not this one <GNUtoo|laptop> ok <DocScrutinizer> just for now I'd recommend a bit of common sense on volume settings <DocScrutinizer> plus make sure you disable the DAC and AMP whenever there's no audio playback. And get some DC rejection aka bias compensation in your playback chain, so the DAC doesn't have a DC component <DocScrutinizer> even better, get a highpass filter plugin, that has -6dBm@80Hz, and you're mostly fine <DocScrutinizer> or check the work of err... HNZ was his nick iirc, about codec's digital parametric filters. He patched ALSA to set the register values for the digital filter <GNUtoo|laptop> ok <DocScrutinizer> this would be the best option, and comes totally for free <GNUtoo|laptop> I'll add that to TODO list <DocScrutinizer> no idea why Nokia missed that
- automatic battery charging:
- add a kernel part adapting the more complete openmoko driver for reading the state (or fso but kernel is better)
- add the charge in the kernel too (or fso but kernel is better)
- power consumation:
- check if the accelerometers can be disabled
< DocScrutinizer> umm, LIS302 can not be "disabled". You can switch it off, via some low-power-mode bit in CTRL-X register
- bluetooth integration : replace the following script by fso and/or udev:
modprobe hci_h4p ; echo "00:11:22:33:44:55" > /sys/devices/platform/hci_h4p/bdaddr ; modprobe -r hci_h4p ; modprobe hci_h4p echo 1 > /sys/devices/platform/wl12xx/bt_coex_mode #bluetooth coexistance mode(wifi and bluetooth share the same antenna, if you don't set that you've got bluetooth disconnection when you use wifi)
- write a fsodeviced plugin for bluetooth
- telephony
- package or replace(using alsa?) the pulseaudio plugin
- sound
- routing: add better volumes, and fix volume handling:
- org.freesmartphone.Device.Audio.SetVolume set headphones volumes also when on speaker
- org.freesmartphone.Device.Audio.SaveScenario doesn't save the headphones volume when on headphones
- => shouldn't we use fixed volume for headphones and speaker and declare the PCM control as the volume
- routing: add better volumes, and fix volume handling:
- clock:
- make the time stay across reboots(time on wesnoth saves broken,time broken): setting the clock with shr-settings and ntpd works but is lost after reboot.