Related
Just for fun and because I can, I started to work on recompiling the kernel for my Archos 10.1 (gen8) device.
I'm working with the Archos provided gen8_gpl_froyo source tarball.
Apart from some small stuff I could work out, like unterminated double quoted strings in config.in files, patches that don't apply to sources because the sources contain symlinks where files are expected, and of course the rounds of what-do-I-need-on-my-host (automake, texinfo, ...) - I got both a working kernel compile, and all the rest of the build.
I proceeded to menuconfig in some stuff I'd like to have in the kernel, as modules, like netfilter conntracking / NAT support, advanced (policy) routing, namespaces, nfsd. Also went smoothly.
I can successfully start that kernel on an existing Uruk 0.7 install, by untarring my self built modules over what Uruk comes with in /lib/modules/2.6.29-omap1/kernel, depmod that, and use the Uruk's /root/initramfs.cpio.gz together with my self built zImage for flashing through the recovery menu.
The system then boots up fine, I can verify it is running the kernel, I can load the netfilter conntracking / NAT modules, and even install an state ESTABLISHED rule which does what it should.
HOWEVER - and that's why I open this thread, there is constant chatter, coming from the kernel, being written to logcat. This uses quite a bit of CPU, probably for the logging work, so I rapidly reverted to the Uruk's own kernel.
What I would like to know, is whether somebody else has seen the following kernel messages in a similar scenario, and knows what I did wrong / how I can work around that?
Code:
03-06 15:33:56.816 I/cat ( 1020): <6>tmdlHdmiTxHdcpCheck 4245
03-06 15:33:56.816 I/cat ( 1020): <3>Bad input instance value returned in hdcp_check line 729
03-06 15:33:56.847 I/cat ( 1020): <6>tmdlHdmiTxHdcpCheck 4245
03-06 15:33:56.847 I/cat ( 1020): <3>Bad input instance value returned in hdcp_check line 729
03-06 15:33:56.878 I/cat ( 1020): <6>tmdlHdmiTxHdcpCheck 4245
03-06 15:33:56.878 I/cat ( 1020): <3>Bad input instance value returned in hdcp_check line 729
It is a constant repetition of these two lines, I just showed three instances so you can get a feel for the frequency from the timestamps.
The function names / messages are nowhere to be found in the archos released source code, nor in the modules compiled from there.
They reside in two module files that lie directly in /lib/modules/, named hdmicec.ko and hdmitx.ko
The hdmitx.ko module is loaded when I boot into my kernel. Loading hdmicec.ko by hand does not improve the situation. Also, under the normal Uruk 0.7 kernel, only the hdmitx.ko is loaded.
Update 7.3.: the situation stays the same after I modified my .config to be, except for the diverse modules I additionally selected, identical to the kernel /proc/config.gz found on Uruk 0.7. There seem to be several things missing that are in Uruk 0.7, i.e. the interactive CPU governor, and filesystem caches.
I also compared the loaded modules after boot, and apart from module size, it is the same list with Uruk 0.7 and my kernel.
Trying again to use my kernel, I also noticed that the tablet freezes as soon as I try to start WLAN. Still pings (on the g_ether USB connection I use), but the GUI is frozen and ssh connections, too.
It seems to me that the gen8_froyo_gpl source released by Archos is somewhat lacking...
Where can I find the Uruk 0.7 kernel tree, or some other kernel that is Known Good?
Latest kernel source you can find here:
http://sauron.pourix.com/UrukDroid/
conntrack/nat brakes compatibility with tiwlan kernel driver - witch is not part of kernel (but can be recompiled).
Anyway - entire wifi stock is a mess .. sadly
$aur0n said:
Latest kernel source you can find here:
http sauron.pourix.com /UrukDroid/
Click to expand...
Click to collapse
Thanks! What is the build system are you using?
I'm not exactly confident that the one I built from the Archos GPL package, is good.
But it seems to work! I successfully compiled your kernel, with your .config, and run that now. Wifi is working so far, my g_ether usb network connection works, too, and no funny hdmi messages are showing.
Now I'm going to build in some of the stuff I wanted of the networking stuff, and see what breaks wifi exactly. I would _love_ to have conntrack / NAT available.
Update built again with various networking stuff enabled, advanced routing and namespaces among them, but consciously NOT with conntracking. Guess what - tiwlan_drv.ko does not load! When triggered through the UI that results in an apparent complete hang, but when trying insmod from a shell it is benign. All in all that's good - the wlan problems probably don't have anything to do with conntracking, and I have a half way easy test case to start "bisecting" which build option makes it fail. Now if I only had more time today...
Anyway, thanks again Sauron for providing such a good basis for playing!
$aur0n said:
conntrack/nat brakes compatibility with tiwlan kernel driver - witch is not part of kernel (but can be recompiled).
Click to expand...
Click to collapse
After some compile / flash / test cycles I'm pretty convinced that anything which changes the layout / size of struct net_device or struct sk_buff, breaks that binary tiwlan_drv.ko thing - which is probably to be expected...
Some googling around, did not find me any source code to that tiwlan_drv.ko, only loads of people copying it around between various systems in binary form (argh...)
Do you have source for that module available, so I could try and recompile it when the struct layout changes?
Here's a list of config defines that should probably be left alone, gleaned from looking at the struct definitions:
Code:
options that change sk_buff:
CONFIG_XFRM=y
CONFIG_NF_CONNTRACK=n
CONFIG_BRIDGE_NETFILTER=n (switches on when enabling bridge driver,
but can be switched off separately - bridge
itself builds and module loads)
CONFIG_NET_SCHED=n (so no tc / traffic shaping / queueing)
CONFIG_NET_CLS_ACT=n
CONFIG_IPV6_NDISC_NODETYPE=n?
CONFIG_MAC80211=n
CONFIG_NET_DMA=n?
CONFIG_NETWORK_SECMARK=n
options that change net_device:
CONFIG_WIRELESS_EXT=y
CONFIG_NET_DSA=n
CONFIG_NETPOLL=n (switched on / needed by netconsole... sigh)
CONFIG_NET_NS=n (would love to have that, lxc could work well then...)
CONFIG_DCB=n
CONFIG_COMPAT_NET_DEV_OPS=y
You can try with this source
http://processors.wiki.ti.com/index.php/OMAP35x_Wireless_Connectivity_Release_Notes_beta_3_release
I haven't checked it - so I cant guarantee it will work. But If you could make it work - this would give us NAT on Uruk - so....
$aur0n said:
I haven't checked it - so I cant guarantee it will work. But If you could make it work - this would give us NAT on Uruk - so....
Click to expand...
Click to collapse
Thank you! I looked into the stuff a bit, it is certainly the right code set. It's a pretty huge pack overall, packing a kernel and userlevel stuff, even a copy of the iptables source , but I already located the driver itself...
I'll see that I extract the driver only parts into your kernel tree, somewhere under staging, and get it to build and maybe even work from there.
Will need some time to do that, and I'm rather busy with other work this week - next week maybe.
tiwlan_drv rebuild - no success so far
Hi $auron,
was able to take some time yesterday and today to work on the tiwlan_drv source code you pointed out. Unfortunately I did not get it to run.
I successfully built a module, inside your kernel tree, by incrementally dumping .c and .h files from the TI code drop into a subdir of drivers/staging/ and finding out which -DEFINES it needs to build, and some small code mangling was also neccessary.
However, the resulting module fails to properly load, first with some GPIO allocation message which I could get around (not present in the .ko file from Archos), and then in a request_irq call during initialization. Looking at that second failure point I notice that the more hardware / board oriented parts of the code look not at all like what objdump can tell me about the Archos binary...
Given my nonexistent ARM assembler skills, I cannot go forward at that point with ease, so I'm trying to chicken out by asking some Archos people for the source... No idea whether that will work...
UPDATE: no reply from Archos so far...
I try to sidestep the issue by moving the problematic elements of skbuff and net_device from the middle of the struct, to the end.
Hi!
I see that the topic is quite old - but anyway: are there any news? I am trying to build gen8 kernel with conntrack/nat support but with no luck - the kernel doesn't load, it reboots the device.
Did anybody find the way to compile with that options?
Golomidov said:
Hi!
I see that the topic is quite old - but anyway: are there any news? I am trying to build gen8 kernel with conntrack/nat support but with no luck - the kernel doesn't load, it reboots the device.
Did anybody find the way to compile with that options?
Click to expand...
Click to collapse
In Uruk 1.6 kernel has compiled in conntrack/nat.
$aur0n said:
In Uruk 1.6 kernel has compiled in conntrack/nat.
Click to expand...
Click to collapse
Yes, but there are other options that are missing in your kernel - targets owner and multiport - and because of that orbot transparent proxy doesn't work
Could you please tell how did you achieve that? I mean how did you compile UD kernel with conntrack/nat support?
(btw, I have changed init and installation scripts in UD for it to work with latest archos devices - a35dm for exmple)
EDIT: did you take/recompile tiwlan_drv.ko? would standard kernel work if I just copy tiwlan_drv.ko from UD?
---------- Post added at 03:06 PM ---------- Previous post was at 02:48 PM ----------
Golomidov said:
EDIT: did you take/recompile tiwlan_drv.ko? would standard kernel work if I just copy tiwlan_drv.ko from UD?
Click to expand...
Click to collapse
Nope, it didn't work
$aur0n said:
In Uruk 1.6 kernel has compiled in conntrack/nat.
Click to expand...
Click to collapse
$aur0n, could you please share the knowledge how did you manage to compile kernel with tiwlan driver and conntrack features?
Community will appreciate it! Thanks!
Golomidov said:
$aur0n, could you please share the knowledge how did you manage to compile kernel with tiwlan driver and conntrack features?
Community will appreciate it! Thanks!
Click to expand...
Click to collapse
It's all all written somewhere in developers thread of uruk droid.
$aur0n said:
It's all all written somewhere in developers thread of uruk droid.
Click to expand...
Click to collapse
Confirmed! tiwlan has been compiled and tested with nat/conntrack and targets owners and multiport.
Since openaos is down pasting here instruction:
Code:
How to build the WLAN source provided by archos
Kernel module released at http://gitorious.org/archos/archos-gpl-gen8/trees/master/hardware/ti/wlan/wl1271
Download the above mentioned sources.
cd .../hardware/ti/wlan/wl1271/platforms/os/linux
Now setup your environment by editing wl_env.bash or do it manually on the commandline in my case it was:
export CROSS_COMPILE=/usr/src/gen8/buildroot/build_arm/staging_dir/usr/bin/arm-linux-
export ARCH=arm
export HOST_PLATFORM=zoom2
export KERNEL_DIR=/usr/src/gen8/buildroot/linux/
Then type make and wait a few minutes and you are done. The tiwlan_drv.ko will appear in .../hardware/ti/wlan/wl1271/platforms/os/linux This gives you only the module. I am still looking at how the tiwlan_loader needs to be compiled.
More info can also be found http://omappedia.com/index.php?title=Wilink_Linux&redirect=no
If you use wl_env.bash then don't forget to
# source wl_env.bash
after editing and before make
thanks everybody!
[Kernel][Ref] Samsung Gravity Smart SGH-T589 Technical info & custom kernel project
The Samsung Gravity SMART is a low-midrange Froyo-based Android phone. It hasn't gotten a lot of attention because it's on an unpopular carrier (T-Mobile) and LOL QWERTY KEYBOARD. I intend to change that.
Technical Specifications
Below is information I've gleaned from spec sheets, Internet research, and judicious use of a loupe on my wife's broken phone.
Platform: Qualcomm S1 Snapdragon 7227 @ 800Mhz
CPU: ARM1136EJ-S
Touchscreen: ATMEL mXT224E
WiFi: Broadcom 4329
GPU: Adreno 200
RAM: 320MB, 275MB accessible
Bluetooth: ???
[more later--I'm at work and don't have all my notes]
Kernel development
I don't have anything to release yet. As a proof-of-concept, I've successfully compiled the sources provided by Samsung. It boots, but two big issues prevent me from releasing anything:
The coordinates on the digitizer are inverted--i.e. tapping the top left corner activates the bottom right, and vice versa.
The menu, back, and search capacitive buttons don't work at all.
Upcoming Features
Here's what I'm planning to add to the kernel once driver issues are resolved:
More CPU frequency scaling options
More scheduler/governor options
What's not planned
Gingerbread/ICS (phone needs updated boot loader to support 2.6.35 or later Linux kernels so we are stuck w/ Froyo for now)
I managed to hack the touchscreen driver to kinda-sorta work (at least the axes are correct now), but it's still not quite right. It's very inaccurate, which makes drawing anything (i.e. trying to play Draw Something) not work at all.
ATMEL has released drivers for the mXT series (including the 224E) but I'm having trouble getting it to work properly. Going to compare it against the kinda-working driver and see if I can fix it.
I found part of the problem, but I'm still having trouble with getting the driver to even load. Still, I discovered that the stock touchscreen driver only supports 2 simultaneous touches--the chip actually supports up to 10 simultaneous. I'm hoping to get the driver working so it's actually usable.
I have a friend with this phone i'm curious to see what you can do with it!
Man, this touchscreen driver is kicking my butt.
The official Atmel drivers don't work at all--the i2c call(s) fail during initialization and you get no touchscreen input.
The driver in the kernel released by Samsung is broken, too. In the default configuration, both axis are inverted so you have to tap the top-right of the screen to tap on something that's actually in the bottom-left. And the navigation buttons at the bottom don't work at all (menu/back/search).
So far all I've managed to do is at least get the orientation fixed, but the driver's still broken--you can't tap on anything on the edges (left/right), and the scaling is wrong so taps are mis-aligned in different parts of the screen. It's hard to describe, but comparing the output of YAMTT on stock kernel vs. compiled kernel shows glaring problems.
At this point I am trying to fix the Samsung driver, since it at least partially works. In the process, I'm doing a pretty massive code cleanup, mainly code organization and complete debug info that will make it easier to dissect exactly how the driver works and hopefully find the cause of the freaky behavior.
I've overhauled the debug output of the Samsung driver so that it's easier to parse via grep. The next trick will be actually fixing the driver.. but I'm going to be gone for annual training for the next two weeks, so things will be on hold until I get back.
I'm very excited to see what can be done with this for the phone.
This is my girlfriend's first android phone and while she's enjoying it, I want the experience to be better for her.
Good luck with your training!
SefEXE said:
I'm very excited to see what can be done with this for the phone.
This is my girlfriend's first android phone and while she's enjoying it, I want the experience to be better for her.
Good luck with your training!
Click to expand...
Click to collapse
Nice choice
This is a powerful device but unfourtuneally is an unpopular one, so there is not many developers with the Gravity
I strongly recommend you to install to follow and install this ROM on your girlfriend's phone: http://forum.xda-developers.com/showthread.php?t=1320187
Well, I've managed to get a 3.6.35.7 kernel to boot on the phone.
Samsung released the kernel source for the SGH-T589W which seems to be a Gingerbread edition of the Gravity Smart. The kernel builds successfully and manages to boot, but it gets stuck on a black screen. However, it does show up in the 'adb devices' list, so it's a start.
I believe the problem is the lack of both the OneNAND driver (AKA LinuStoreIII) and the RFS filesystem support. The modules from the stock kernel are compiled against 3.6.32.x so they don't work with the newer kernel.
My Google-Fu has turned up partial source for the same version of LinuStoreIII for the 3.6.35.7 kernel, and it successfully compiled. However, I haven't had any luck finding an RFS module.
EDIT: I think I found what I need, but I won't know until I get home!
gblues said:
Well, I've managed to get a 3.6.35.7 kernel to boot on the phone.
Samsung released the kernel source for the SGH-T589W which seems to be a Gingerbread edition of the Gravity Smart. The kernel builds successfully and manages to boot, but it gets stuck on a black screen. However, it does show up in the 'adb devices' list, so it's a start.
I believe the problem is the lack of both the OneNAND driver (AKA LinuStoreIII) and the RFS filesystem support. The modules from the stock kernel are compiled against 3.6.32.x so they don't work with the newer kernel.
My Google-Fu has turned up partial source for the same version of LinuStoreIII for the 3.6.35.7 kernel, and it successfully compiled. However, I haven't had any luck finding an RFS module.
EDIT: I think I found what I need, but I won't know until I get home!
Click to expand...
Click to collapse
NICE, keep us with update with the news :highfive:
Well, I thought I had something, but it's still not working quite right. I've got the parts for my debug cable on order. Should get here within the next week.
Well, I haven't yet gotten the serial output yet, but I do have a much more detailed output from dmesg now. I'm attaching it below.
Ugh. Samsung's OSRC is being a pain in the butt.
I contacted them requesting the correct driver. Their response: "That is the correct driver."
I responded, "Did you actually test it? Because when I compile the code you provided, the x/y axes are inverted." Their response: "Herp derp Samsung Proprietary."
My most recent response: "Don't give me that proprietary BS. The driver is GPL. If you used any of the code that's in that driver, you need to publish your modifications to it."
We'll see what happens next...
Your dedication to this project continues to provide me with a glimmer of hope for the 589. I thank you sir. Down with herp derp.
Sent from my SGH-T589 using xda app-developers app
Well, now they're claiming that the driver is the one they used in the shipping kernel. Oy!
In other news... I successfully booted Gingerbread on the phone using a stock kernel. I cheated a bit, though. I'll describe how I did it, in case anyone doubts me. The post is intentionally vague because it's not fully usable, wifi doesn't work at all, and I'm not currently at home and able to fully document the process. If anyone is actually interested in trying this out, I'll consider writing a script to automate it.
Known issues with this method:
- network time doesn't seem to work right
- wifi definitely doesn't work right
- usb mode doesn't appear at all
- The phone reports itself as a Galaxy Ace in the Settings screen.
OK, the steps:
First, the things you will need:
1) Stock SGH-T589 firmware (samfirmware.com has it)
2) Stock Galaxy Ace firmware (again on samfirmware.com)
3) unpack-bootimg.pl (google it). This is used to extract the kernel and ramdisk from boot.img
4) mkbootimg (google, or build from source). This is used to re-create the boot.img file
Steps:
- Start by unpacking each firmware package into its own folder.
- From the SGH-T589 folder, delete everything except boot.img
- From the Ace folder, delete everything except boot.img and system.rfs (MAKE SURE YOU DELETE arm11boot.img)
- Now, make an empty folder and copy the stock boot.img into it. Unpack it with unpack-boot.img.pl
- Make another empty folder and put the Ace's boot.img into it. Unpack it also.
- delete the boot.img-kernel.gz from the Ace's folder
- delete boot.img-ramdisk/lib/modules/*.ko
- copy boot.img-kernel.gz from the stock folder to the ace one.
- copy boot.img-ramdisk/lib/modules/*.ko from stock folder to corresponding dir of the ace one.
- copy boot.img-ramdisk/COOPER.rle from stock folder to ace one (optional, preserves the Gravity Smart boot splash screen)
- now, repack the boot.img-ramdisk folder into the CPIO archive
- next rebuild the boot.img file
- lastly, create ODIN archive with the rebuilt boot.img and the Ace's system.rfs
Flash the resulting tar.md5 file using Odin 4.40 USA.
Hi gblues. Very good work so far! Are you planning on porting CWM recovery? It's been ported to very similar phones, like the Ace, Gio, and Mini.
ShaunOfTheLive said:
Hi gblues. Very good work so far! Are you planning on porting CWM recovery? It's been ported to very similar phones, like the Ace, Gio, and Mini.
Click to expand...
Click to collapse
I used a similar technique (unpack, replace kernel/kernel drivers, repack) on the Galaxy Ace CWM recovery and it seems to work. Unfortunately, when I tried to use it to flash the Ace's ICS port, I get a black screen with "A N D R O I D" in the middle (note: this is after extracting the boot.img and doing the unpack/swap/repack process and flashing with ODIN). I suspect that ICS requires kernel features that simply aren't in the stock 2.6.32 kernel.
After doing some more long-term tests, my accomplishment above is a good proof-of-concept but it's not ready for prime time. Landscape mode is completely broken. Games like "Cut the Rope" only give you a black screen. The QWERTY keyboard is borked (mainly alt-keys). The SD card disappeared completely until a reboot. USB mode doesn't work. The accelerometer doesn't seem to work. The stock web browser crashes. Wifi doesn't work. The list goes on.
So that gets back to getting a custom kernel working...
Since I can't post in dev, I'm asking here.
Where the problem is?
Is it kernel and missing modules (i don't have them in my kernel, like usb-storage etc. )
or there is more than that such as hardware limitations?
Is someone trying to resolve this problem or someone tried and failed (what did they learn?)
I'm not just curious and waiting for job to be done by someone else, I want to contribute myself.
Motorola A956 has OMAP3630.
OMAP kernel has usb support (git.omapzoom.org/?p=kernel/omap.git;a=summary)
Also A956 has a TI 51001582002 Power management IC wich has usb transciver supporting usb otg (becouse droid 1 has the same ic)
So as far as i know its probably only the software problem to get it running...
We can't load a modified kernel in D2G unless we have kexec. Motorola has posted the source for the kernel and I guess you could try to insmod kexec module + script to load your custom kernel with usb host support. Check out the IRC logs of detule and others for Droid 3 because are pioneers for custom kernels on a locked Moto device.
Motorola Droid 2 Global Source: http://sourceforge.net/projects/droid2we.motorola/files/
Doid 3 Kexec project: https://gitorious.org/droid3-kexec
here is also something interesting to consider: http://blog.hash-of-codes.com/
Good luck! I would love to see this happen but I haven't had a chance to try out myself because my hands are full with other unfinished projects.
Hello all.
Sorry for noob question, but I am just a beginner.
I have a tablet (GoClever R105KB) with Rockchip RK3066 chipset.
So far, I did not find any alternative ROM for it.
I am quite happy with the stock firmware (I just rooted it), but I'd like to modify a single thing - the USB_OTG driver.
The stupid device designer compiled the kernel with the flag CONFIG_USB_OTG_BLACKLIST_HUB enabled.
Therefore my keyboard with integrated hub and mouse port does not work.
I'd like to recompile the kernel, however, the device manufacturer did not post any sources.
I am thinking about downloading the kernel sources for 3.0.8+, compile the hub.c myself and somehow force the module to the kernel.
Can anyone advice if this is even possible?
Thanks.
I now found out that there is some option to patch already running kernel, or maybe disassemble the kernel, remove the condition and assemble it back.
Does anyone have experience with such activity?
Hello,
i want to use GPIO ports in my phone, but, my kernel has disabled it
i googled a lilttle, and found CONFIG_GPIO_SYSFS should be enabled,
Can someone, unpack the kernel, add this parameter, and recpack it for me?
Thx.
This is my boot.img file-https://drive.google.com/file/d/1UCmPQmOwlLOO6iQ1XRi88pIQD4DmWiWL/view?usp=sharing