Monday, May 19, 2008

N770 Project died durring setup

Some of you were waiting on my follow up post to my story about the Nokia N770 Internet tablet.

Short Answer: Wireless radio in the unit is non-functional, to the point that the kernel can not load firmware to the card during the module load.

The N770 is a great device in both hardware and user interface design. How ever, it takes too much work to get a root shell and then to figure out what is wrong with it. I don't think it would have been as hard to solve a problem other then the network being dead.

This is not my last try with a Nokia Internet Tablet! However, I think I will try the N800 next time. It has one feature that is a major difference from the N770, an SecureDigital (SD) slot instead of the MMC style slot for memory expansion.

Labels: , , , , , , , , ,

Friday, May 9, 2008

Nokia N770 battle

I got the Nokia N770 two days ago and I love it, so does Karri, the person I actually bought it for. Well I loved it up until I tried to get it attached to the wireless network.

This cute little device runs a slightly modified spin-off of the Debian Linux distribution. All is good in the world. I love Debian and I have a very Open Source toy that runs Linux.

The user interface is great, just click on the little globe near the top right corner of the screen and choose "Select Network". I thought this should not be that hard. So I did that. A dialog shows up and a small box says searching. I wait patiently, because there are a lot of networks in the building, most of them on the same channels. I keep waiting for about a minute longer and the searching box goes away. What, I am left with an empty dialog box. No networks at all.

Now I think, maybe it has a "flight mode", like many PDAs / Cell Phones have. I start looking around it for a physical switch. Find none. I then look through all the software and control panel on the device. Didn't find a thing there either. At this point, I am getting to the I'm missing something important that is staring me in the face stage.

Onto the Web I go, I visit everybody's friend Google. I searched for almost every word combination related to N770 and WLAN / Wireless. No luck, just a bunch of stuff about low signal strength. I know that shouldn't be the problem, since I was 5 foot from the Access point.

Again scratching my head for a new idea. I decided this may be a "firmware thing", so I went off to find new firmware. No luck, I already have the latest "Official" firmware. What to do next? Get shell and root access to the device. Now that is not as easy as it seems.

Yes this device is build on Linux. It is running GNOME. Well someone seems to have thought that no one would want to use xterm on it. Yes, thats right. The application that is normally installed right along with X was not there.

Off to the Web and Google again to find out how to install xterm. If I could have got the N770 on the net then it would have been very easy. The Application Manager included on the device works similarly to Synaptics on Debian / GNOME desktop. Aim it at a repository and select the package you want. Hmm, now we have problem two. We need to do apt-get, but no network. Snoop around the N770 software some more and I find in Application Manager a Install package from file. Still how to get the file over to the device.

The N770 does not use Secure Digital or Compact Flash memory cards. It uses MMC cards. Luckily my Nokia 6680 phone uses those and I have one in it for the camera and voice recorder. It's small 64MB, but Debian packages on a general are small and since this is a integrated low memory device, the packages should be that big. Those problems solved, where do I find the package.

Meamo http://meamo.org has a package repository. These are the folks who wrote the software these little devices run. A bit of hunting later, I have the package and it's dependencies. Just like I would have done on a Debian box with a package that was not in the apt-cache. Use your favorite browser to follow the link to the repository and jump into the "pool".

Ok, got that installed. Now lets use that terminal we got. It got installed into the main menu under a group called Extras. Start it up and wow we got an "sh$" prompt. Nokia being smart, did not make the front end user root. They didn't make it easy to get root easy either.

During my search for xterm, I saw a reference for a command "sudo gainroot". I executed the command and promptly got the response "if you want to break your device enable R&D mode". Again in my previous searches I saw this. This one of the functions of the Nokia propritory flasher utility, that is only available for Linux and Mac OS X. It is a small command line program that must be run as root or a user who is a member of a group with direct access to /dev/usb*

Got that done and rebooted the device. Into xterm we go again. "sudo gainroot" works this time. I did some snooping around to find out what was installed and then I went and ran "dmesg".

Wow, we got errors and more errors. Here is a copy of the output.

        / # dmesg
        
        M MMU, v=0xe0fff000, p=0x13c00000, sz=0x1000
[  137.866271] omapdsp: mapping in ARM MMU, v=0xe00
[  137.866546] omapdsp: mapping in ARM MMU, v=0xe00
[  137.866912] omapdsp: mapping in ARM MMU, v=0xe00
[  137.867065] omapdsp: frame buffer export
[  137.867126] omapdsp: mapping in ARM MMU, v=0xe00
[  137.867309] omapfb_notifier_cb(): event = READY
[  137.867370] omapfb_register_client(): success
[  137.867645] omapdsp: mapping in ARM MMU, v=0xe00
[  137.867858] omapdsp: mapping in ARM MMU, v=0xe00
[  137.867950] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868103] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868194] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868286] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868377] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868469] omapdsp: mapping in ARM MMU, v=0xe00
[  137.868560] omapdsp: mapping in ARM MMU, v=0xe00
[  138.282531] omapdsp: IPBUF configuration
[  138.282562]            512 words * 16 lines at .
[  138.282806] omapdsp: found 4 task(s)
[  138.283081] omapdsp: task 0: name pcm0
[  138.283691] omapdsp: taskdev pcm0 enabled.
[  138.292327] omapdsp: task 1: name pcm1
[  138.292846] omapdsp: taskdev pcm1 enabled.
[  138.301910] omapdsp: task 2: name avsync
[  138.302398] omapdsp: taskdev avsync enabled.
[  138.311340] omapdsp: task 3: name audiopp
[  138.311889] omapdsp: taskdev audiopp enabled.
[  138.722137] hci_cmd_task: hci0 command tx timeot
[  138.722259] brf6150: Frame for non-running devie
[  139.411499] aic23 powering up
[  139.416137] aic23_init_power() done
[  139.737457] hci_cmd_task: hci0 command tx timeot
[  139.737548] brf6150: Frame for non-running devie
[  139.816741] omapdsp: mmap info: vmadr = 40016000
[  142.196197] aic23 powering down
[  152.388031] aic23 powering up
[  152.392486] aic23_init_power() done
[  158.977447] aic23 powering down
[  160.678497] aic23 powering up
[  160.682952] aic23_init_power() done
[  164.664978] aic23 powering down
[  165.187286] aic23 powering up
[  165.192108] aic23_init_power() done
[  165.196563] omapdsp: mmap info: vmadr = 40016000
[  167.595306] aic23 powering down
[  167.651885] aic23 powering up
[  167.656890] aic23_init_power() done
[  170.077423] aic23 powering down
[  172.935028] aic23 powering up
[  172.939605] aic23_init_power() done
[  175.305541] aic23 powering down
[  175.822814] aic23 powering up
[  175.827178] aic23_init_power() done
[  179.836761] aic23 powering down
[  183.522369] aic23 powering up
[  183.527008] aic23_init_power() done
[  186.618041] aic23 powering down
[  189.119628] aic23 powering up
[  189.123931] aic23_init_power() done
[  196.578948] aic23 powering down
[  196.995208] aic23 powering up
[  196.999542] aic23_init_power() done
[  211.774414] aic23 powering down
[  216.386260] aic23 powering up
[  216.390472] aic23_init_power() done
[  218.751007] aic23 powering down
[  232.676208] aic23 powering up
[  232.680450] aic23_init_power() done
[  235.040039] aic23 powering down
[  235.320861] aic23 powering up
[  235.325073] aic23_init_power() done
[  248.899444] aic23 powering down
[  249.854064] aic23 powering up
[  249.858276] aic23_init_power() done
[  252.219787] aic23 powering down
[  252.413543] aic23 powering up
[  252.417755] aic23_init_power() done
[  254.782226] aic23 powering down
[  259.350524] aic23 powering up
[  259.354736] aic23_init_power() done
[  268.970825] aic23 powering down
[  269.367004] aic23 powering up
[  269.371215] aic23_init_power() done
[  274.571228] aic23 powering down
[  274.734375] aic23 powering up
[  274.738647] aic23_init_power() done
[  277.102722] aic23 powering down
[  279.219818] aic23 powering up
[  279.224121] aic23_init_power() done
[  281.591094] aic23 powering down
[  288.797546] aic23 powering up
[  288.801818] aic23_init_power() done
[  292.846801] aic23 powering up
[  292.851013] aic23_init_power() done
[  296.641601] aic23 powering down
[  298.109283] aic23 powering up
[  298.113586] aic23_init_power() done
[  304.727691] aic23 powering down
[  306.255523] aic23 powering up
[  306.259735] aic23_init_power() done
[  308.625946] aic23 powering down
[  323.036560] aic23 powering up
[  323.040832] aic23_init_power() done
[  325.407623] Loading 3825.arm firmware
[  326.805480] aic23 powering down
[  352.432647] aic23 powering up
[  352.436859] aic23_init_power() done
[  354.797790] aic23 powering down
[  355.354705] aic23 powering up
[  355.358947] aic23_init_power() done
[  357.719757] aic23 powering down
[  358.657409] fw_upload: Not allowed to DMA write
[  358.657470] **** WLAN registers ****
[  358.657562] ARM_INT      -> 0x00000000 (32 bits)
[  358.657623] ARM_INT_ENA  -> 0x00000000 (32 bits)
[  358.657714] HOST_INT     -> 0x00000000 (32 bits)
[  358.657775] HOST_INT_ENA -> 0x00000000 (32 bits)
[  358.657867] HOST_INT_ACK -> 0x00000000 (32 bits)
[  358.657928] GP1_COMM     -> 0x00000000 (32 bits)
[  358.658020] GP2_COMM     -> 0x00000000 (32 bits)
[  358.658081] DEV_CTRL_STA -> 0x00000000 (32 bits)
[  358.658142] DMA_DATA     -> 0x0000 (16 bits)
[  358.658203] DMA_WR_CTRL  -> 0x0000 (16 bits)
[  358.658294] DMA_WR_LEN   -> 0x0000 (16 bits)
[  358.658355] DMA_WR_BASE  -> 0x00000000 (32 bits)
[  358.658416] DMA_RD_CTRL  -> 0x0000 (16 bits)
[  358.658477] DMA_RD_LEN   -> 0x0000 (16 bits)
[  358.658569] DMA_RD_BASE  -> 0x00000000 (32 bits)
[  358.658630] 3825.arm failed
[  358.777374] aic23 powering up
[  358.781585] aic23_init_power() done
[  359.001403] Loading 3825.arm firmware
[  361.141418] aic23 powering down
[  362.417510] aic23 powering up
[  362.421722] aic23_init_power() done
[  364.782165] aic23 powering down
[  364.919616] aic23 powering up
[  364.923950] aic23_init_power() done
[  367.289886] aic23 powering down
[  367.951538] aic23 powering up
[  367.955871] aic23_init_power() done
[  370.321105] aic23 powering down
[  372.856567] aic23 powering up
[  372.861267] aic23_init_power() done
[  381.492980] aic23 powering down
[  382.957275] aic23 powering up
[  382.961486] aic23_init_power() done
[  385.321136] aic23 powering down
[  385.512573] aic23 powering up
[  385.517486] aic23_init_power() done
[  387.883728] aic23 powering down
[  391.985534] fw_upload: Not allowed to DMA write
[  391.985595] **** WLAN registers ****
[  391.985687] ARM_INT      -> 0x00000000 (32 bits)
[  391.985748] ARM_INT_ENA  -> 0x00000000 (32 bits)
[  391.985839] HOST_INT     -> 0x00000000 (32 bits)
[  391.985900] HOST_INT_ENA -> 0x00000000 (32 bits)
[  391.985992] HOST_INT_ACK -> 0x00000000 (32 bits)
[  391.986053] GP1_COMM     -> 0x00000000 (32 bits)
[  391.986145] GP2_COMM     -> 0x00000000 (32 bits)
[  391.986206] DEV_CTRL_STA -> 0x00000000 (32 bits)
[  391.986267] DMA_DATA     -> 0x0000 (16 bits)
[  391.986358] DMA_WR_CTRL  -> 0x0000 (16 bits)
[  391.986419] DMA_WR_LEN   -> 0x0000 (16 bits)
[  391.986480] DMA_WR_BASE  -> 0x00000000 (32 bits)
[  391.986541] DMA_RD_CTRL  -> 0x0000 (16 bits)
[  391.986633] DMA_RD_LEN   -> 0x0000 (16 bits)
[  391.986694] DMA_RD_BASE  -> 0x00000000 (32 bits)
[  391.986755] 3825.arm failed
[  393.257934] aic23 powering up
[  393.262207] aic23_init_power() done
[  395.629730] aic23 powering down
[  405.082183] aic23 powering up
[  405.086395] aic23_init_power() done

I would say somethings wrong with the firmware loader.

Found a unofficial OS2007 flash for the N770. I will let you know how well it works in the next post.

Labels: , , , , , , , , , , , ,