Tuesday, 10 August 2010

Yup, more Axdroid

New build Axdroid 2010-08-09 here!

Changes since Saturdays build:
  • JIT is enabled. It turns out the fancy new JIT compiler Android 2.2 introduced was disabled for ARMv5TE devices for some reason. This build has it enabled (actually I'm now using the dalvik code from the CyanogenMod ROMs).
  • CompCache is included. This takes a chunk of RAM and uses it as a compressed swap device, so essentially you can fit more in there at the expense of a little processor time doing the (de)compression. I think on the Axim with so little RAM it will be worthwhile.
  • The system apps/frameworks are pre-optimized. This means the Axim doesn't have to do so much work on first boot, so speeds things up a bit. Google for odex or dexpreopt if you want to find out more about that.
  • The MMS and camera apps were removed, they don't make much sense on the Axim.
  • SD card mount permissions have been fixed - Android can write to your SD card and it couldn't before. This means things like album art in the music app now work.
  • I added some code to attempt to figure out which touchscreen model is in use. If X50/X50v users could let me know how it goes that would be great. Basically it looks at the first 100 values it gets and if they look like a X51 series device it assumes that's what it is, otherwise it assumes X50 series. However, having never seen the data from an X50 series device I'm guessing what it will be based on the existing code, so it might be that I'm completely wrong. Also I'm not sure if 100 values will be too few/too many/just right. You might find that it doesn't work for a few seconds then suddenly does work when it decides it's an X50.
  • I changed the key mapping, now it goes:
    • Calendar = menu
    • Contacts = back (I'm considering swapping Calendar/Contacts)
    • Email = end call (not sure if this one is of any use)
    • Home = home (yay!)
    • Wireless = volume up
    • Voice record = volume down
  • Root FS is now using ext4 rather than ext3. Not sure why I chose ext3 to begin with to be honest :s
  • Small tweaks like a boot logo

It seems to me that the speed on my device is now limited by my SD card rather than running out of RAM or anything else. My card is a pretty standard class 2 2GiB one, I may have to invest in a faster one to see if it makes much of a difference. I've also been looking at the internal flash which I think would be much faster than the SD card to read from, but at least for the X51(v) NAND flash it doesn't seem like anyone has ever managed to use the chip with Linux. I've not given in yet though :)


28 comments:

Ido said...

Hi Paul,

Still copying the code, crossing my fingers, thanks for that, I did a quick search on Linkedin and found this Dell guy who was certified on Axim axim, his name is Nicky Sanasey, I figured perhpas he can get us in touch with someone at Dell who may be able to assist with drivers related information (PCMCIA and Wireless, not sure if it is of value, but happy to give it a go...

Ido said...

Hi Paul,

I made contact with Dell developement manager, waiting for some feedback, in regards to my x50v, the touch screen seem to be confused, vertical/horizontal (with or without mirror mode enabled), the build does load faster, in the spirit of cutting, I also think the dialer can go on the axim (I will probably use skype if/when possible)

Paul Burton said...

Thanks, I think I'm going to have to get hold of an X50 or X50v myself so I can test things like this. I agree the dialer is useless too, but it's part of the core device config and I tried deleting it anyway but bad things happened, it seemed other packages depend on it...

Any specs would be fantastic! I doubt he can give you anything that isn't already public, but I'll live in hope :)

SL said...

I'm getting a kernel panic during boot. It occurs right after "Moving system mountpoints". The output is "[303.528032] Kernel panic - not syncing: Attempted to kill init!" Hangs there after that.

I've been having this error with the last few builds you put out. The last one that worked was the one published on June 27. Do you know what the problem could be?

SL said...

Nevermind, it just doesn't seem to work on my old 1 GB SD Card. Booted up fine on my 8 GB MicroSD card.

Fergus said...

X50v Rom 2010809 Boots a little faster , just a generic lexar 1gig card for testing.
Nice wallpaper everytime.
side buttons ringer volume up and down.
back button okay.
Browser started eventually with no connection available message
Calculator no touch pad or pen tap, get a couple numbers in and stops responding.
Different touchpad driver?
Use the jog dial to move around touchpad driver?
Browser stays running
No Power off, reset button restored wm2003 to default , back to year 1999.
Is it the Nand flash or boot loader to make it native?
Found a turn off phone option once , tried to power off.

Max Fierke said...

I gave the wrong pixel clock for the X51. I forgot to divide the pixel clock given in HaRET by the pixel clock divisor. I figured it did that automatically. Sorry. The pixel clock should be set to 19230 same as the X51v.

Ido said...

Hi Paul,

not much response from the Dell guy, but I was able to find the following in regards to graphics acceleration: MBX 3D Hardware Acceleration and Swerve Client 3D Software
MBX and Swerve Client were developed in collaboration with Imagination technologies and Superscape respectively. This demonstration shows Swerve Client with MBX hardware acceleration running on the Dell Axim device. MBX accelerated 2D and 3D graphics under Symbian using OpenGL ES API running on the RealView Versatile platform baseboard

•MBX hardware acceleration brings high quality 3D graphics to mobile devices
•Swerve Client enables 3D Java (JSR-184) and native games to be delivered over-the-air
•Combined, MBX and Swerve Client provide a high performance 3D mobile gaming platform,

not sure if this means that Symbian openGL ES API drivers could be used?

Paul Burton said...

Yeah, I know the 2700g is an MBX - the issue is that there is no public (accelerating) Linux driver for the MBX and no public docs to write one.

Not sure what the Swerve thing is about, as far as I'm aware the Axim doesn't even ship with Java?

Ido said...

http://www.nalanda.nitc.ac.in/industry/appnotes/arm/softsys/DII0046B_MBX_SWIG.pdf

I assume these are not the instructions?

Ido said...

http://mer-project.blogspot.com/2010/02/mbx3d-drivers-out-for-n8x0-and-other.html

sorry, this will be the last link I provide, it is well beyond my depth

Max Fierke said...

I have found the GPIOs and IRQs used when turning off and on the wifi switch.

GPIOs Triggered when turning on Wifi:
GPIOS GPLR2: GPIO89(89)=1
GPIOS GPLR3: GPIO107(107)=0
GPIOS GPLR2: GPIO89(89)=0
GPIOS GPLR3: GPIO107(107)=1

IRQ Events Started when Turning on WiFi:
IRQS GEDR3: GPIO107(171)=1

The above IRQ event is ended when turning off WiFi.

Max Fierke said...

I may have just written a dirty PCMCIA driver based off of the hx2750 PCMCIA driver. I'll try implementing it tomorrow. If things turn out well, I might be able to get wifi working.

Paul Burton said...

Ido: Thanks for looking - the integration guide isn't really of much use with nothing to integrate. I hadn't seen the N800 drivers before but that's ARMv6 based where the Axim is only ARMv5, so it probably makes use of instructions we don't have. Also it's built against an older kernel (Axdroid is currently on 2.6.32).

Max: Fantastic! I believe that the PCMCIA bus is used for compact flash and WiFi, so my plan was to tackle compact flash first (just because it should be easier) to ensure the bus driver works before looking at the WiFi. Let me know if you get anywhere with it, because I probably won't get a chance to look into it until the weekend anyway.

Max Fierke said...

Paul, I'm compiling a build with experimental PCMCIA support (It has support for CF and Wifi but still requires wifi drivers). I also fixed some QVGA stuff that was introduced in the last few builds. I changed .lccr0 back to 0x01b008f9 because it was causing problems with my LCD.

Ido said...

Any ideas on why the touch screen does not work properly on the x50v?

from research it seems to be completely identical to x51v equipment...

Max Fierke said...

If run into some problems with booting AxDroid. It keeps killing media and zygote. I can't test the PCMCIA driver this way. I put up the current source code, notes, and anything else relevant on the PCMCIA page on the new wiki:

http://axdroid.co.cc/

Ido said...

you probably saw this one before, but I figured I will share anyway:

http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/drivers/video/mbx/mbxfb.c

Paul Burton said...

Ido: The X51 has a newer version of the touchscreen controller that's in the X50. They are the same as far as the driver is concerned, but apparently Dell didn't wire them up the same because the coordinates reported are different between the two models. I'm just not entirely sure what should happen on the X50 yet. The mbxfb driver is what I was referring to when I mentioned we could get an unaccelerated framebuffer :)

Max: I've seen that happen before when the permissions of stuff in the system directory were wrong, though I'm sure there are many reasons it could happen... I still haven't had a chance to look at PCMCIA/CF/WiFi yet but hopefully will soon.

Ido said...

Hi Paul,

thanks for the clarifications, I thought that x50v and x51v are the same, and x50 and x51 are same (resolution and screen size), but I must have got it wrong, thanks for the clarifications,

Regards,

Ido

Nic said...

I also had the killing zygote & media processes problem, managed to fix it by replacing the files in the "./root/common" folder with the same ones extracted from the root.img given with the precompiled image. Fixed it for me and Android booted slowly but successfully. I didn't see the Dell/Android logo though, just a console until the normal Android splash. I think these are issues with the build script published being out of the date for the latest axdroid git.

I also compiled your pcmcia driver into my kernel, hasn't caused a crash at least and during the early boot I got a response from the driver (it found something in slot 1, I guess the wifi, and the second slot timed out, which I guess is my empty CF slot). I will try testing responses when it starts responding, it's quite slow (first run optimisation of files etc I guess?).

Paul Burton said...

Nic: Yes you're right, the scripts I uploaded are from before the splash and a bunch of other things were added. Now that I know at least a couple of people other than myself are interested in building AxDroid I think it might be best if I push the scripts to github so everyone can be up to date and collaborate - I'll do that soon :) Oh, and great to hear the PCMCIA driver seemed to show signs of life!

Azrael said...

Fantastic project! I just installed it on my x51v tonight. I'm really looking forward to wifi.

Jc said...

I have tried the last build with my x50v and it loads and shows main screen but the touchscreen is unresponsive. Sometimes it throws an error window and seems to be responding (very very slowly), but anyway your work is amazing!
It is a pitty that the build works so slowly due to memory restrictions, I will be waiting for future improvements.

It is also really hard to have so little information from Dell, but they probably do not earn anything giving away such info and they are a bussiness to earn money not to have happy customers (as it was proved with the X50/51 series).

Max Fierke said...

Nic: My PCMCIA driver is working (at least somewhat)? That is fantastic! When I have some more time available I will look into WiFi and see if I can get that working or at least get it turning on and off in Android.

vir1980 said...

You are doing a great job, it was amazing how well it worked, the only problem i have is battery :( it only lasted 1hr, but every thing else is ok, charging the battery right now :D

Paul Burton said...

Max: It works in that you can see sockets, and it seems to detect if something is present in the CF socket, but it won't read the CIS or anything (also it didn't build straight up as it used some old gpio functions, I'm confused how it did for you/Nic :s). Anyway, when I plug in a CF card windows seems to touch the CPLD/eGPIO in addition to regular GPIOs. I've got some free time today so will have a look.

vir1980: I haven't touched power management yet, so it's just running the processor at whatever speed windows left it, and obviously doesn't handle suspend/resume yet so I'm actually surprised you managed an hour :)

Max Fierke said...

Paul: I figured that was the case. Most other devices (hx4700, rx3000, etc.) have an ASIC3 and operate everything through that, so I figured eventually the CPLD would come into the picture. Hopefully, this won't make it to much more complicated to get PCMCIA/CF/WiFi working.