Jump to content

Custom Kernel development effort


Guest martinbrook
 Share

Recommended Posts

Guest McSpoon

It would make sense that Huawei are releasing new devices with Android 1.6 or 2.0 and presumably those devices will have almost the same hardware as the pulse (but with more memory, etc). So they'll be upgrading their drivers to support 1.6 or 2.0 which I guess would help with upgrading the pulse. Although they might use totally different touchscreen hardware for multi-touch etc.

But I worry that Huawei will focus all of their resources on to the new devices. Maybe they can just drop the firmware for the new devices onto the pulse and it will work with minor tweaks? I really hope they will upgrade the pulse to Android 2.0 within the next few months but I remain skeptical. I guess we'll just have to wait and see.

Link to comment
Share on other sites

I just read on the Dutch T-Mobile forum, that this above mentioned moderator said the upgrade to 2.0 is to be expected in the first quarter of 2010, unfortunately not this december...

Edited by bas-r
Link to comment
Share on other sites

I just read on the Dutch T-Mobile forum, that this above mentioned moderator said the upgrade to 2.0 is to be expected in the first quarter of 2010, unfortunately not this december...

Yup, saw it too on his post from today. But at least they tell it now, instead of saying oops in December.

Link to comment
Share on other sites

I'm not that knowledgeable about the GPL, but if T-mobile/Huawei would release a new update, would they be required to release the source aswell? If so, they can hopefully stop being so bitchy about it and release the wifi drivers aswell. :D

Link to comment
Share on other sites

Yes. If they do do an update without the source (likely), then I guess it gives us an opportunity to badger them for the *right* source (i.e. including the wifi module) without seeming pestery...

Link to comment
Share on other sites

I'm not that knowledgeable about the GPL, but if T-mobile/Huawei would release a new update, would they be required to release the source aswell? If so, they can hopefully stop being so bitchy about it and release the wifi drivers aswell. :D

Yes they will have to open the source with a new release, given that they'll use GPL'ed code.

The drivers were made and are owned by the vendor, Atheros. And although Atheros has a good open source reputation, those wifi drivers aren't GPL.

Link to comment
Share on other sites

Guest McSpoon

Could the wifi problem be due to this line in the .config

CONFIG_LOCALVERSION="$(KERNEL_LOCAL_VERSION)-perf"

I think the ar6000.ko module is expecting it to be "2.6.27-perf" but we're getting a mismatch.

To those who have flashed their own kernel boot image, can you view the contents of /proc/version

eg. adb pull /proc/version .

If it still says "$(KERNEL_LOCAL_VERSION)-perf" then that could explain why the wifi isn't working.

Link to comment
Share on other sites

Guest McSpoon

Damn. So yours gives the same: Linux version 2.6.27-perf ..

I was thinking there might be a mismatch happening but it isn't that.

However if you're ever recompiling+reflashing the kernel then you could always try changing that line to the following, just to be sure.

CONFIG_LOCALVERSION="2.6.27-perf"

Link to comment
Share on other sites

Guest McSpoon
3. You can use your built kernel by: Unzipping the boot.img in the huawei update, Replace the kernel with your own (zImage?)...

Hey Timmmm, you mentioned getting the boot.img from the huawei update. Which huawei update were you referring to? I'm not aware of any. Was it on their site? Or do you mean the T-Mobile Nov 2009 unlock update? (if so, how do you extract the boot.img from that updata.app file?)

Link to comment
Share on other sites

Guest martinbrook

Here's how.

I booted the original and my kernel and used dmesg after each boot to compare the boot messages.

There were a number of differences but the following seemed related to wlan errors reported later on in the boot.

<3>kobject (c03adab0): tried to init an initialized object, something is seriously wrong.
<4>[] (dump_stack+0x0/0x14) from [] (kobject_init+0x40/0x94)
<4>[] (kobject_init+0x0/0x94) from [] (device_initialize+0x28/0x94)
<4> r5:c03b271c r4:c03ada48
<4>[] (device_initialize+0x0/0x94) from [] (platform_device_register+0x18/0x24)
<4> r5:c03b271c r4:c03ada40
<4>[] (platform_device_register+0x0/0x24) from [] (msm_add_sdcc+0x30/0x38)
<4> r5:c03b271c r4:c03d3328
<4>[] (msm_add_sdcc+0x0/0x38) from [] (halibut_init+0x3bc/0x6a0)
<4>[] (halibut_init+0x0/0x6a0) from [] (customize_machine+0x20/0x2c)
<4> r7:00000001 r6:00000000 r5:c000e3a8 r4:c0022628
<4>[] (customize_machine+0x0/0x2c) from [] (do_one_initcall+0x54/0x17c)
<4>[] (do_one_initcall+0x0/0x17c) from [] (kernel_init+0x8c/0xfc)
<4> r8:00000000 r7:00000000 r6:00000000 r5:c002297c r4:c0022628
<4>[] (kernel_init+0x0/0xfc) from [] (do_exit+0x0/0x770)
<4> r5:00000000 r4:00000000
<3>kobject_add_internal failed for msm_sdcc.2 with -EEXIST, don't try to register things with the same name in the same directory.
<4>[] (dump_stack+0x0/0x14) from [] (kobject_add_internal+0x174/0x1b4)
<4>[] (kobject_add_internal+0x0/0x1b4) from [] (kobject_add_varg+0x40/0x50)
<4> r9:00000000 r8:c03adad4 r7:c03adad4 r6:00000000 r5:c03adab0
<4>r4:c03c1868
<4>[] (kobject_add_varg+0x0/0x50) from [] (kobject_add+0x58/0x64)
<4> r7:c03adad4 r6:00000054 r5:c03adab0 r4:c03ada48
<4>[] (kobject_add+0x0/0x64) from [] (device_add+0x78/0x4ac)
<4> r3:c03adad4 r2:c035f951
<4>[] (device_add+0x0/0x4ac) from [] (platform_device_add+0x100/0x154)
<4>[] (platform_device_add+0x0/0x154) from [] (platform_device_register+0x20/0x24)
<4> r7:00000001 r6:c03d3328 r5:c03b271c r4:c03ada40
<4>[] (platform_device_register+0x0/0x24) from [] (msm_add_sdcc+0x30/0x38)
<4> r5:c03b271c r4:c03d3328
<4>[] (msm_add_sdcc+0x0/0x38) from [] (halibut_init+0x3bc/0x6a0)
<4>[] (halibut_init+0x0/0x6a0) from [] (customize_machine+0x20/0x2c)
<4> r7:00000001 r6:00000000 r5:c000e3a8 r4:c0022628
<4>[] (customize_machine+0x0/0x2c) from [] (do_one_initcall+0x54/0x17c)
<4>[] (do_one_initcall+0x0/0x17c) from [] (kernel_init+0x8c/0xfc)
<4> r8:00000000 r7:00000000 r6:00000000 r5:c002297c r4:c0022628
<4>[] (kernel_init+0x0/0xfc) from [] (do_exit+0x0/0x770)
<4> r5:00000000 r4:00000000[/codebox]

Looking at the trace the related code in the kernel is here :-

[codebox]static void __init halibut_init_mmc(void)
{
if (machine_is_msm7201a_ffa()) {
mpp_mmc = mpp_get(NULL, "mpp3");
if (!mpp_mmc) {
printk(KERN_ERR "%s: mpp get failed (%ld)\n",
__func__, PTR_ERR(vreg_mmc));
return;
}
} else {
vreg_mmc = vreg_get(NULL, "wlan");
if (IS_ERR(vreg_mmc)) {
printk(KERN_ERR "%s: vreg get failed (%ld)\n",
__func__, PTR_ERR(vreg_mmc));
return;
}
}

sdcc_gpio_init();
#ifdef CONFIG_MMC_MSM_SDC1_SUPPORT
msm_add_sdcc(1, &halibut_sdcc_data);
#endif

msm_add_sdcc(2, &halibut_sdcc_data_wifi);
if (machine_is_msm7201a_surf()) {
#ifdef CONFIG_MMC_MSM_SDC2_SUPPORT
msm_add_sdcc(2, &halibut_sdcc_data);
#endif
#ifdef CONFIG_MMC_MSM_SDC4_SUPPORT
msm_add_sdcc(4, &halibut_sdcc_data);
#endif
}
}

Checking my .config file we do have BOTH CONFIG_MMC_MSM_SDC1_SUPPORT and CONFIG_MMC_MSM_SDC2_SUPPORT defined so the function msm_add_sdcc is being called twice which is what the kernel errors are stating. ' tried to init an initialized object, something is seriously wrong.'

I changed the .config not to include CONFIG_MMC_MSM_SDC2_SUPPORT rebuit the kernel and I had working wifi.

Wireless issue solved on my kernel build.

post-602982-1259512785_thumb.jpg

Details to follow after the football.

Martin

Link to comment
Share on other sites

Guest McSpoon

You legend! That is awesome. :D

I don't understand how huawei had both enabled without an error. I'm guessing machine_is_msm7201a_surf() should return false. Perhaps lunch is invoking "choosecombo 1 1 msm7201a_surf eng" by default and huawei used a different parameter? (Not that I understand any of this). But fantastic work.

So Paul, are you going to buy another Pulse now? :(

Link to comment
Share on other sites

Guest martinbrook

I'm just http://en.wikipedia.org/wiki/Standing_on_t...lders_of_giants

The reports of missing lock screen and odd button presses don't seem to be affecting my build but will keep an eye out for any new bugs.

I need to restore my nandriod backup of my userdata image as I managed to hose that during the dev. There was a very good post here a couple of days ago which linked to a page discussing the packaging and flashing of images. Great page. Can be found here. http://android-dls.com/wiki/index.php?titl...ack_Boot_Images. The only thing you have to be careful of is that the devices are in a different order on the pulse.

Web Page Instructions

dev: size erasesize name

mtd0: 00040000 00020000 "misc"

mtd1: 00500000 00020000 "recovery"

mtd2: 00280000 00020000 "boot"

mtd3: 04380000 00020000 "system"

mtd4: 04380000 00020000 "cache"

mtd5: 04ac0000 00020000 "userdata"

Pulse

mtd0: 00280000 00020000 "boot"

mtd1: 05500000 00020000 "system"

mtd2: 06940000 00020000 "userdata"

mtd3: 01400000 00020000 "cache"

mtd4: 00500000 00020000 "recovery"

mtd5: 00040000 00020000 "misc"

If you follow the instructions later on in the instructions you erase mtd2 which is the userdata and not the boot device.

As I say above this would not be possible without the efforts of the giants which have gone before.

What's next?

Thanks

Guys

Truly excellent work my friend!

P

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.