Rockchip GPL Kernel Upgrade to 3.0.101 Released 
I have just uploaded all the kernel changes I made in the last couple of months. It is kind of a "big bang" commit. Sorry about that. There are too many changes to mention them all separately. Mali support is also included.

Also, any of you with touch screen monitors out there, please give it a try. Most linux distributions are not ready (yet) for touch screen monitors, but basic support should work!

Give it a try, and make sure to share additions or changes you make. The more this code is adopted, the better it will become. So please support my initiative to get a common code base for the Rockchip platform!

Support for more devices will be added soon, among other things.

I hope you like it. Make sure to leave your comments below, and feel free to use that little orange "Donate" button on the left of the screen at any time ;-)

The kernel source can be found here

[ 25 comments ] ( 2357 views )   |  permalink  |   ( 2.7 / 775 )
Mali working on Rockchip RK3188 Quad Cores... 
This is just to say that it is done, Mali is working. More to follow!





[ 9 comments ] ( 1176 views )   |  permalink  |   ( 3.2 / 626 )
Rockchip GPL Kernel source released 
There haven't been any updates for quite some time here. But that doesn't mean that nothing has happened lately... on the contrary!

Today I released a new kernel for the Rockchip SOCs. It is based on version 3.0.72 of the linux kernel, and merges have been done with code from several Rockchip kernels out there. Apart from that, all the latest Rockchip patches have been applied. Support for several devices has been added already, and changes have been made to add more devices easily later.

Tests have been done on the Tronsmart MK908 and the Kingnovel K-R42 (aka MK888), on which the kernel works stable and all onboard components are fully functional. More devices will be added later, among which are the Rikomagic MK802IV and the Radxa Rock. These are all RK3188 Quad core devices. I hope to find some time to add support for some of the dual core RK3066 devices later as well.

As part of the kernel I've also added the 3.0.72+ kernel modules that are still closed source, like the Mali and the Wifi drivers. These modules are needed if you want to use the kernel on an existing Android system. Know that we are working hard to make the changes necessary to get rid of those closed source modules, in order to create a fully 100% open sourced GPL kernel for the Rockchip platform. Parts are already in there (like Mali support), but more work has to be done in order to get it all working.

Give it a try, and make sure to share additions or changes you make. In the meantime we are trying hard to make this kernel even better, with added support for more devices and embedded support for Mali, Wifi, Bluetooth and other things. We also started working on several distributions other than Android. Think about Ubuntu and OpenELEC.

I hope you like it. Make sure to leave your comments below, and feel free to use that little orange "Donate" button on the left of the screen at any time ;-)

The kernel source can be found here

[ 23 comments ] ( 1581 views )   |  permalink  |   ( 3.4 / 1329 )
MK908 Kernel upgrade to 3.0.72+ 
There's still a lot of work to be done, but I've managed to upgrade the stock 3.0.36+ kernel to version 3.0.72+. As you can see it runs Android, and it does so perfectly well. Butter smooth, very fast and stable!

I'll start adding more functionality now. Overclocking already works, and I couldn't fry an egg on it yet, so maybe I have to push it a bit further.

Update: I forgot to say, this kernel still has everything 100% working on the MK908. Wifi, Bluetooth, Mali, the whole lot.

Stay tuned for more!




[ 9 comments ] ( 1032 views )   |  permalink  |   ( 3.1 / 1248 )
MK908 Kernel... 100% Working, including Wifi and Bluetooth. Finally! 
I've uploaded the source code for the quad core RK3188 based MK908 on my github. This is the kernel source we've all been waiting for. It is fully functional and has Wifi and Bluetooth working out of the box.

It is pretty unchanged, I only changed the config a bit, setting the DDR SDRAM speed to 500MHz for instance and removing the camera support, freeing up some memory.

I'll add more features to the kernel later, so stay tuned.

[ 15 comments ] ( 1613 views )   |  permalink  |   ( 3 / 1135 )
These are exciting times! 
I know, it has been a while since I posted something here. So it might look like nothing much happens here at Omegamoon headquarters. But believe me, the opposite is true.

Since respected Picuntu developer Alok got his hands on the rk3188 kernel, a small team of developers have spent much of their free time delving through the kernel code. It has been hard to keep a good balance between work, hobby and a healthy family life the last couple of weeks.

The team that has been working together across the world consists of Alok and Galland (known for their Picuntu work), Astralix (from CrewrRKTablets) and myself. Results were many sleepless nights slowly making progress or sometimes banging our heads against a brick wall. In order to do some groundwork we got support from Perry, one of the owners and founder of KSK Electrics, who kindly donated several rk3188 devices to the team members.

Others have posted their rk3188 success-stories online already. I saw an Ubuntu implementation and overclocked kernels already. Very nice! Itís good to see that apparently there are more people working on these devices, which is a good thing! Our small team has a long list of things that still need to be fixed, or things we would like to see support for. On top of this list is Wifi networking and bluetooth support. We think our current implementation of kernel and OS is not yet ready for primetime, but my guess is that this won't take long. Until that time, please bear with us!

Iíll try to post a few things that might be interesting for others as well. We have modded the MK908 and the S400 to get a serial console for instance, and... well, we have more in store. These are exciting times!

[ 14 comments ] ( 8389 views )   |  permalink  |   ( 3 / 1166 )
OpenELEC distribution for RK3x in the making... 
I have been working on the 3.0.36+ kernel sources for the RK3x for a while now. I focus development on the MK808(B) for now, since I have a serial console available on those devices. For me the serial console is a must-have for kernel development. It makes it so much easier to find out what is causing a (fatal) kernel error, and it helped me out several times during development. I uploaded the current kernel sources to my github for anyone willing to give it a try as well. Be careful though. You have to be aware that (for now) the recent stock Android 3.0.36+ based images won't boot with the custom kernel. Cause of this is the Mali driver. It seems there are differences between the kernel driver I use and the userspace binary that is part of the stock kernel. Seems they don't match, resulting in a kernel oops during the boot process.

I also started with the development of a RK3x release of OpenELEC v3.0. For any of you that don't know OpenELEC, it is being advertised as a small Linux distribution built from scratch as a platform to turn your computer into an XBMC media center. I'm already using OpenELEC on a heavy weight quad-core Intel based machine. I use it as a dedicated media center, and it would be really something if this huge machine could be replaced with one of the noiseless(!) and extremely low powered mini RK3x devices.

I managed to build the complete OpenELEC distribution, replaced the (Android) boot.img and kernel and put the OpenELEC distribution on a SD card. Current status is that the kernel is booting nicely and the good news is that OpenELEC is starting as well, but the X-Server is causing some problems, so it needs more work. I still need to incorporate the Mali X11 driver as well.

I tried to test the OpenELEC distribution on the quad core RK3188 based MK908 as well, but since the boot process is being killed due to the X-Server not starting currently nothing shows up on screen. Maybe I need to try to get the serial console mod working for the MK908 just to see if the custom kernel boots on the RK3188 as well, using all cores...
I feel another solder session coming up :-)

[ 10 comments ] ( 1637 views )   |  permalink  |   ( 3 / 1431 )
Ready for the RK3188 quad cores? 
RK3188 based quad core devices are hitting the streets rapidly now. I bought the Cube U30GT2 recently for my wife (so I keep away from it... for now) and I got the message that the Tronsmart MK908 has just arrived at my house today as well. Both devices are powered by the quad core RK3188 SOC, and both use version 3.0.36+ of the linux kernel.

A few days ago Galland contacted me saying that he found this github repository containing new Rockchip kernel sources that referenced the new quad core RK3188 SOC.

The original source of this repo is once again bq Readers, the Spanish tablet maker that was among the first manufacturers to release the RK3066 kernel code last year. The original kernel source is meant for the bq Curie model, and can be found here.

Looking at the bq Curie kernel snapshot it is version 3.0.36+ of the linux kernel, like all the RK3188 devices currently use. The code is the most up-to-date Rockchip version that I've seen so far. I started out to configure the kernel for the MK808B because I was curious to know whether or not this kernel snapshot has support for the RK903 Wifi/Bluetooth working out-of-the-box. Since the HDMI drivers are also updated from the version I use it might as well have fixes for the "Black screen/No signal" problem as seen in the 3.0.8+ version of the kernel. I decided to leave all code as-is and see if it compiled to begin with. I had to make a couple of changes in order to get the kernel compiled, and after it finally compiled I had to fiddle with the kernel configuration here and there because of some errors I made in the configuration.

The kernel booted but Android didn't start, so I had to check what happened using the serial console. Problem was that the serial console got disabled early in the boot process, so I couldn't see what went wrong. Current status is that I have the serial console fixed. I now know that Android is not booting because of the missing/non-working NAND module for the 3.0.36+ kernel. I tried changing the kernel version back to 3.0.8+ but then the NAND module crashes. So next thing will be to copy over the 3.0.36+ version from the Cube or the MK908 to see if that works.

Looking at the code a bit further one sweet thing I found was that it finally contains source code for clock_data.c. I broke my head over this previously closed source part over and over again. I need to investigate this piece of code later, since this might open up more overclock/underclock possibilities. But more importantly it can drastically improve general stability if tweaked correctly.

Hopefully I will find some time later this week to see if this kernel snapshot can be used on the RK3188 quad core MK908 device. If this version of the kernel indeed is usable for the RK3188 quad cores, then a big thank you goes out to bq Readers for providing the code. This sets an example for other companies that up until now refuse to follow the (GPL license) rules!

A lot of developments... Nice!


[ 26 comments ] ( 11901 views )   |  permalink  |   ( 3 / 1528 )
What's going on... 
I get a lot of questions regarding RK3066 kernel development. Sorry if I didn't answer your question yet. It may take some time, but I'll clean up my email box in the end.

I've been breaking my head on Wifi/Bluetooth support for the MK808B. That took a lot of my time. I disassembled the stock kernel to find out what parts are currently missing in our kernel code. But I still haven't identified the piece of code that is responsible for the RK903 to do it's job. I still don't give up yet, but this one is hard to crack. Thanks again to Rockchip for keeping the kernel closed source. It sucks big time!

In the meantime I got myself an ODROID-U2. This device is based on a quad core Exynos4412 Prime ARM Cortex-A9 running at 1.7Ghz. This is the first quad core device I got my hands on, and first impressions are that this device is really speedy.

I haven't had much time to tinkle with it, but I think this device is capable of running as a full fledged media device.

Good thing is that kernel source is available for the Exynos4412, and there are several distributions to choose from already, including Ubuntu, Xubuntu, Debian, Fedora, OpenSUSE and of course Android.

I also got a V8 donated from Tomato. This dual core RK3066 device has one big advantage over the MK808 device. The external Wifi antenna provides the reception that the MK808 is missing badly.

Apart from the Wifi antenna there's not much difference compared to the MK808 though. It doesn't have Bluetooth, it runs Android 4.1 and has the same connectivity. Stock kernel is 2.6.35.7+ so that definitely needs an update.

Since I got this device sponsored by the manufacturer I tried to get my hands on the RK3066 kernel source through them as well. Without success, that's still a no-go. I tried to explain the value of open source, and what the open source community could do to help boost their sales. But somehow they feel that by returning kernel sources to the community, like they're obliged to do according to the GPL license, they are giving away intellectual property. It's like talking to a chair really!


[ 6 comments ] ( 184 views )   |  permalink  |   ( 3 / 1523 )
RK3066 - The MK808B Wifi/Bluetooth chip (RK903) 
I got a MK808B donated recently (thanks again Alejandro!). Where the MK808 has a RK901 Wifi chip on-board, the MK808B model contains the RK903 which combines Wifi and Bluetooth functionality.

A lot of you have tried to build a kernel with support for the RK903 Wifi and Bluetooth, up until now without success. So I gave it a try myself. I used a Broadcom 4330 driver as a base, one that matches the stock kernel driver as close as possible. Stock kernel uses version 5.90.195.26.1.6.1 and I use version 5.90.195.104.

It is still very much a work in progress, since I have to reverse engineer the (closed source) driver used by Rockchip. This is the current status of my findings. Look at the differences in the kernel logs.

In the stock kernel, the driver generates following output:
=======================================================
==== Launching Wi-Fi driver! (Powered by Rockchip) ====
=======================================================
RKWIFI WiFi driver (Powered by Rockchip,Ver 4.23) init.
dhd_module_init: Enter
=========== WLAN placed in POWER ON ========
ANDROID-ERROR) ## wifi_probe
ANDROID-ERROR) wifi_set_power = 1
rk29sdk_wifi_power: 1
wifi turn on power
ANDROID-ERROR) wifi_set_carddetect = 1
rk29sdk_wifi_set_carddetect:1
mmc1: slot status change detected(0-1)
rk29_sdmmc_change_clk_div..1921.. newDiv=42, newCLK=294Khz [sdio]
Linux Kernel SDIO/MMC Driver

Dongle Host Driver, version 5.90.195.26.1.6.1
Compiled in drivers/net/wireless/bcmdhd on Aug 24 2012 at 09:28:21
drivers/mmc/core/core.c...1827.. ===== mmc_rescan Begin....[mmc1]

mmc_attach_sdio..800.. ===== Begin to identify card as SDIO-card. [mmc1]
rk29_sdmmc_change_clk_div..1921.. newDiv=0, newCLK=24750Khz [sdio]
mmc1: new high speed SDIO card at address 0001
FW_PATH = /system/etc/firmware/fw_RK903.bin
NVRAM_PATH = /system/etc/firmware/nvram_RK903_26M.cal
F1 signature read @0x18000000=0x16044330
DHD: dongle ram size is set to 294912(orig 294912)

This is the first part only. The driver attaches nicely to the SDIO driver. Now this is where I go wrong apparently. Looking at the kernel output of my kernel, the driver shows up as follows:
=======================================================
==== Launching Wi-Fi driver! (Powered by Rockchip) ====
=======================================================
BCMDHD Wi-Fi driver (Powered by Rockchip, reverse engineered by Omegamoon) init.
rockchip_wifi_init_module: Enter
## wifi_probe
wifi_set_power = 1
rk29sdk_wifi_power: 1
wifi turn on power
wifi_set_carddetect = 1
rk29sdk_wifi_set_carddetect:1
mmc1: slot status change detected(0-1)
rk29_sdmmc_change_clk_div..1921.. newDiv=42, newCLK=294Khz [sdio]
Linux Kernel SDIO/MMC Driver
Dongle Host Driver, version 5.90.195.104
Compiled in drivers/net/wireless/bcmdhd on Mar 16 2013 at 11:36:56

drivers/mmc/core/core.c...1861.. ===== mmc_rescan Begin....[mmc1]
rockchip_wifi_init_module: sdio_register_driver timeout
## wifi_remove

Somehow the driver is unable to attach to the SDIO driver, resulting in a timeout. So I added some debug information to find out what goes on, resulting in the following output:
=======================================================
==== Launching Wi-Fi driver! (Powered by Rockchip) ====
=======================================================
BCMDHD Wi-Fi driver (Powered by Rockchip, reverse engineered by Omegamoon) init.
rockchip_wifi_init_module: Enter
## wifi_probe
Omegamoon >> wl_android function wifi_set_power entered...
wifi_set_power = 1
rk29sdk_wifi_power: 1
wifi turn on power
wifi_set_carddetect = 1
rk29sdk_wifi_set_carddetect:1
mmc1: slot status change detected(0-1)
rk29_sdmmc_change_clk_div..1921.. newDiv=42, newCLK=294Khz [sdio]
Omegamoon >> bcmsdh_linux function bcmsdh_register entered...
Linux Kernel SDIO/MMC Driver
Dongle Host Driver, version 5.90.195.104
Compiled in drivers/net/wireless/bcmdhd on Mar 16 2013 at 11:36:56

drivers/mmc/core/core.c...1861.. ===== mmc_rescan Begin....[mmc1]
Omegamoon >> mmc_rescan_try_freq: mmc_power_up(mmc1) at 300000 Hz...
Omegamoon >> mmc_rescan_try_freq: mmc_go_idle(mmc1)...
Omegamoon >> mmc_rescan_try_freq: mmc_attach_sdio(mmc1)...
Omegamoon >> sdio function mmc_attach_sdio entered...
Omegamoon >> back from mmc_send_io_op_cond with code -12
Omegamoon >> mmc_rescan_try_freq: Could NOT mmc_attach_sdio(mmc1), code 255...
Omegamoon >> mmc_rescan_try_freq: mmc_attach_sd(mmc1)...
Omegamoon >> mmc_rescan_try_freq: Could NOT mmc_attach_sd(mmc1), code 255...
Omegamoon >> mmc_rescan_try_freq: mmc_attach_mmc(mmc1)...
Omegamoon >> mmc_rescan_try_freq: Could NOT mmc_attach_mmc(mmc1), code 255...

rockchip_wifi_init_module: sdio_register_driver timeout
## wifi_remove

Now, "mmc_attach_sdio" is called to attach the SDIO driver. In there "mmc_send_io_op_cond" is called in which a 'probe' command is sent to the Wifi chip. No response is coming back, resulting in a timeout...

These are just quick notes I have taken. I'm still puzzled as to what is wrong. If any of you reading this have any knowledge of what's going on, or have any tips on how to proceed, please give your feedback in the comments!

[ 14 comments ] ( 1302 views )   |  permalink  |   ( 3 / 1651 )

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Next> Last>>