Haier W910 kernel - Miscellaneous Android Development

I've started this thread to track the progress of the kernel for Haier W910.
Since Haier refuses to release the source all progress needs to be made by reverse engineering. I've started with the kernel sources for the Acer A9 as it's referred to in the kernel ( Acer CloudMobile S500 ). And so far have created a custom kernel configuration based on the one extracted from the Haier binary kernel.
It compiles without the Acer additions for now but that's as far as I've got. There are no modifications made that are specific to the W910. To proceed there are 2 sources of information. The ones we can get from /proc, /sys , debugfs and other things from the running binary kernel and the ones we can get from the binary kernel and IDA Pro. I'll upload the IDA Pro files with function names obtained from kallsyms.
Thanks to h3adcrash and china jay chou for their help so far. Feel free to join in, everybody is welcome, I'm not an expert myself but with patience and hard work we'll get a source code for the kernel and then we use Cyanogenmod and other custom ROMS.
Kernel source is here: https://github.com/mcirsta/Haier_W910
Please note it's not ready for use !!!

Excellent - subscribed

I will try this out for sure. One step to making this great phone even better

Subscribed!
Did you also give a look at Codeaurora Android for MSM Project ?
It is a project aimed to build Android Open Source Project (AOSP) on Qualcomm chipsets.
Looking into the “release” development branch there is the configuration to make a build for the varoious generic MSM8x60 chipset family.

MMartini65 said:
Subscribed!
Did you also give a look at Codeaurora Android for MSM Project ?
It is a project aimed to build Android Open Source Project (AOSP) on Qualcomm chipsets.
Looking into the “release” development branch there is the configuration to make a build for the varoious generic MSM8x60 chipset family.
Click to expand...
Click to collapse
Yes I did but I've found that the Acer sources were a better match. With Codeaurora it was hard to establish the time in the git repo history when Haier made their fork of the kernel.
Even with the Acer sources there are probably minor differences but they do seem very similar. In the kernel binary I've found references to all the *.c filenames used to build the Haier kernel. Comparing these to the Acer kernel resulted in only 2 missing files in the Acer sources. There 2 missing .c files were for the AUO display and the Synaptics touchscreen which Acer does not use for the S500(Acer A9) so that was normal.
I based my Haier config (https://github.com/mcirsta/Haier_W910/blob/master/arch/arm/configs/haier_w910_defconfig) on the one extracted from the running binary ( zcat /proc/config.gz ) merged with whatever I thought was useful from the Acer A9 config but without Acer specific stuff.
What I should now have is hopefully close to the kernel the W910 uses but without any Haier specific code. I'm now planning on going over the source code to see what's exported through /proc and /sys as this is stuff I can easily extract from the running W910 kernel. For other stuff I'll have to look into the binary with IDA Pro I think.

Is this still ongoing? I know nothing about development but if I can help in any way

facelessone1 said:
Is this still ongoing? I know nothing about development but if I can help in any way
Click to expand...
Click to collapse
Didn't have much of a chance to work on it last week but it's still on. Right now I'm waiting for my soldering station as I need to solder the wires for UART to make debugging easy.
If anyone is willing to take their W910 apart that would help . I've got a spare one that I'd going to work on.
Other than that I'm not really sure how to proceed myself. I've finished the first stage, adapting the Acer one but now I need to find the right setting for our Haier. First thing to do are probably GPIOs.
There's plenty of info you can get from debugfs and proc that might come in handy.
If you want to help you don't need to be a developer, just to be willing to learn. I'm a programmer but I've got no idea about kernel development either.

disassembled
Just a quick update, I've managed to disassemble a W910, reaching the battery. I still haven't found the UART port though but there's still some more to disassemble.
Once I find the UART port I can easily get debugging message so this should help a lot.

it is good news. thanks for yours hard work

I don't know how are you on UART port, but is is this maybe?

facelessone1 said:
I don't know how are you on UART port, but is is this maybe?
Click to expand...
Click to collapse
Wow, didn't know anyone got this far with the dissasembly. I'm suspecting it's one of those pads but haven't been able to confirm it yet. Any idea where a GND is ? If I get a GND then I can check with the RX on different pads and maybe I'll get something. If it outputs anything on the UART.
One other possibility is that those pads are for the JTAG ? Not very familiar with JTAG though.
I was really hoping the UART was on the other side of the board though but oh well.
I've also been able to confirm that Qisda manufactured this and it's also known as the Acer C9 and probably the Acer V350. Qisda developed the SW for it anyway so I'm trying to see if they'll release something.
I'd still like to get a working UART though.
Anyway good job facelessone1

I didn't dissasemble it myself. Someone from the Croatia tried to do some photo shooting underwater and it went badly as the phone is not waterproof. Phone was dissasembled to be fully dry.
Here are some more shots.
That could be JTAG :/
Nexus 4 UART http://blog.accuvant.com/jduckandryan/building-a-nexus-4-uart-debug-cable/

Here original thread of disassembly in Croatian:
http://forum.pcekspert.com/showthread.php?p=2516220
Have contacted this guy, will post back if I get a reply how he did it.
Sent from my HTC Desire using Tapatalk

jukyO said:
Here original thread of disassembly in Croatian:
http://forum.pcekspert.com/showthread.php?p=2516220
Have contacted this guy, will post back if I get a reply how he did it.
Sent from my HTC Desire using Tapatalk
Click to expand...
Click to collapse
Thanks, maybe he'd be interested in some soldering ? I've managed to disassemble the phome myself but now I'm stuck looking for the UART pads, I was hoping they'd just be marked with RX, TX like on many other devices I've seen but not such luck

Nothing on Haier?
Here are some better pictures, maybe someone can help?
mforce2, are you still up for some soldering?
This device could use custom kernel and better rom so much.
I was thinking, last picture, bottom left corner of the board, 4 pads?

facelessone1 said:
Nothing on Haier?
Here are some better pictures, maybe someone can help?
mforce2, are you still up for some soldering?
This device could use custom kernel and better rom so much.
I was thinking, last picture, bottom left corner of the board, 4 pads?
Click to expand...
Click to collapse
Could be but it doesn't have to be 4 pads, I've often found boards where there were only 2 pads, RX and TX so you had to get your ground from somewhere else. I'm not even sure where GND is and my skills in the electronics department are not that good.
I'll give it a shot though, it's not like I have anything to loose since the phone is still in pieces and I'm note really sure I can put it back

Why can't you put it back? What's wrong?
I don't have USB-UART and don't know almost anything about it, but I will be ordering this in a few days.

I wasn't really careful taking it apart and besides I've got an Optimus G now so I've got no need for a W910 as is. If I were able to get some open source kernel working though that would be fun. What I'm really lacking is time and determination but I think I'm going to try and make slow progress with this.
It's still a great phone IMO and I can see this working nicely. I don't really think you need more than the hardware it has.

Hardware is okay, but software part could do much better. I think people would start developing, altho there are no many, if only someone makes brakethrou'
Check out this, same chipset, has kernel, has kitkat

facelessone1 said:
Hardware is okay, but software part could do much better. I think people would start developing, altho there are no many, if only someone makes brakethrou'
Check out this, same chipset, has kernel, has kitkat
Click to expand...
Click to collapse
Sure but Samsung has a lot of community support around it and sources released by the manufacturer. I've tried really hard to get the sources for this W910 but no one wants to release them. With device tree this would have been much easier but ...
We'll see... first I need to find that UART and there's also the problem of UART voltage, I really hope it uses the standard 3.3V levels because otherwise I won't find it with my current USB to serial TTL cable.

Related

[DEV] Reverse engineering the kernel

So, since HTC is now almost 3 months past due releasing the kernel sources, I've been trying to adapt the GSM kernel to compile and work with our devices, by disassembling the stock kernel and going through line-by-line of the source to see what needs changing.
I started by copying all the '*hero*' files to be '*heroc*', and renamed all the symbols to be heroc as well. Then pulled /proc/config.gz to use as a base config. Also had to fix up the Kconfig's and Makefile's, as needed, to be able to support HEROC-specific stuff. That more or less gets it to a point where you can compile the kernel successfully, although it's still just a GSM kernel with the name and mtype of heroc.
Then I imported the stock kernel (extracted from boot.img, then decompressed) into IDA as a ROM, setup the CONST segment of string data, imported the symbols from /proc/kallsyms using an ida .idc script, and analyzed the remaining areas of the ROM. At that point, I had a virtually fully analyzed binary ROM in ida, complete with symbols. Then went through and renamed the important symbols from the board-heroc* segments as needed to match what is in the source. I also set up some of the more complicated structures/arrays to make them easier to identify.
I found several differences between the stock heroc ROM, and the make-shift hero-turned-heroc source code, and fixed most of what I came across, or just left notes for things to investigate later. What I have now is a hybrid GSM/CDMA kernel that will likely not boot on either device But I figure since I've put as much time into as I have, and I'm sure there are people more familiar with IDA and ARM than I am, I'm putting my IDA file out there for people to start from. If you're not familiar with ARM assembly, this is absolutely useless to you, so you probably shouldn't bother.
I've spent 2 sleepless nights on it already, and still can't get anything to boot. I also tried to get htc_fb_console working so that I could at least see where and why it was dying, but that hasn't worked out well either.
So, by all means, have fun: http://madcoder.binti.ehpg.net/~madcoder/stock_kernel_heroc.i64
It was created using IDA 5.2, 64-bit, but I don't know how well other versions are with compatibility. Oh yeah, it's 35MB
And if you make some breakthroughs, please post about it here. When I get some time, I'll make a patch set to go from the released GSM kernel, to what I have now, and put that up here too.
Thank you, sad but true
I just wanted to say thank you for this work and express how sad it makes me to see the necessity of reverse-engineering in an OPEN SOURCE kernel. I never thought I would see the day.
I would be very curious to hear from you about the specific differences your disassembling unearthed. Can you say with certainty that the Linux kernel code has indeed been changed to work on the CDMA Hero? I mean it's not simply a matter of some missing driver code or other userspace stuff? If so, this would be pretty damning for HTC.
Thanks again, it's amazing to watch the XDA developers' progress in spite of the barriers put in front of their work.
The majority of differences I found were in things like heroc_fixup() where it doesn't check for engineerid/skuid/etc; different camera driver (s5k3e2fx, vs cy8c); fewer checks for multiple pieces of hardware (which is weird considering the stock phone's kernel supports 4 devices) based on system_rev; wrong vreg_get() strings; etc.
The source that HTC released *does* appear to have all the support we need. With modifications to Kconfig and Makefile, and ignoring the missing board files, you *can* compile the kernel directly, using the stock /proc/config.gz, which means all the necessary drivers are already in the GSM source. It's quite obvious that they had a working kernel tree that supported the GSM phone, plus our 4 CDMA phones, and they simply yanked out the CDMA board files and Kconfig changes, before releasing the source code.
What worries me is that I can't get a console, so it's incredibly difficult to find out where it's dying at. If I could get even a serial console to work, it would make this task so much easier. I think my next step is going to be to load up my hacked kernel into ida, and see how different the two are -- that might be easier than translating asm into C and comparing that way. If I can just compare the assembly for the two, it'd probably be easier.
maejrep said:
plus our 4 CDMA phones
Click to expand...
Click to collapse
Not to derail this too much, but which 4 phones do you mean? does it name them in some way?
markachee said:
Not to derail this too much, but which 4 phones do you mean? does it name them in some way?
Click to expand...
Click to collapse
MACH_HEROC (sprint hero)
MACH_DESIREC (vzw droid eris)
MACH_HEROCT (not entirely sure, maybe bell south hero?)
MACH_NEONC (neon is supposed to be the touch dual, which afaik has never been planned as an android phone, so I'm not sure what's up with this name either)
You can see those in the /proc/config.gz on the phone (ungzip or zcat it first ), and just search for "CONFIG_MACH_".
Also in the htc_wifi.c source, you can see references to espresso, and many others.
Would it be possible to port the moment kernel over and use that since its the same processor type and then fill in the things we need?
Mr. Biggz said:
Would it be possible to port the moment kernel over and use that since its the same processor type and then fill in the things we need?
Click to expand...
Click to collapse
I was talking to zefie not too long ago and he was saying the hero kernel is so much more stable than the moments kernel... just my 2 cents.
Keep up the amazing work mad man.
travo1 said:
I was talking to zefie not too long ago and he was saying the hero kernel is so much more stable than the moments kernel... just my 2 cents.
Click to expand...
Click to collapse
Yeah, my fiance went through 2 moments, and they were so buggy she switched to the Hero. No problems since.
flipzmode said:
Keep up the amazing work mad man.
Click to expand...
Click to collapse
+1 for keeping up the good work!
:beer: (Does that emote work on this forum? I hope so...)
bumping this so it doesnt get buried 3 pages again
toastcfh said:
bumping this so it doesnt get buried 3 pages again
Click to expand...
Click to collapse
I thought you said you were going to bed
gu1dry said:
I thought you said you were going to bed
Click to expand...
Click to collapse
i was till i had to refresh again
Yeah, I basically put this on hold, due to work priorities (happens a lot unfortunately :/)
But with the news that HTC may be releasing the source soon, this is probably not worth continuing anyway
maejrep said:
Yeah, I basically put this on hold, due to work priorities (happens a lot unfortunately :/)
But with the news that HTC may be releasing the source soon, this is probably not worth continuing anyway
Click to expand...
Click to collapse
Honestly, I would continue it. Nobody's sure that HTC will release the source code (HTC said they would release the source for the "Gero"...we're hoping that was a mistype).
I have a feeling they won't release it anytime soon and you'll probably solve the entire issue with the cameras and more before that source is released.
bump.... its on the second page
Yea def keep the good work up HTC said over the weekends tht came and went so now all we got is you my good man
man we gotta get this thread stickied!!!!
toastcfh said:
man we gotta get this thread stickied!!!!
Click to expand...
Click to collapse
agreed... lol
anyhow i think this will work out before the htc hope does. bumped to the top
So, with some inspiration from NetRipper, I started trying to find a way that I could see how far it gets in the kernel booting before it stops, since I still don't have a console. Unfortunately, his suggests were LED-related (particularly gpio-enabled), and we don't have any of those. Did find one reaction that is very hard to miss, and luckily very easy to trigger: reboot via gpio
So now I'm stepping through the code, trying to find at what point in execution it stops rebooting and just hangs. So far I'm in init level 4 (of 6). I'm really hoping this leads me to something that will at least tell me "well THERE'S your problem!", and I can reverse the stock kernel asm to figure out what is different.

[DEV] Porting over 2.6.29

Okay everyone. I am working on an optimized 2.6.27 until we can get .29 ported over. But I figure, since I am fairly new to the kernel world, how can we get started porting this bad boy over? I have been looking through the source code but am somewhat lost as to where to get started. I figure if we are able get this going we can make a github account and have the progress set up for everyone. All you devs wanna join in?
chuckhriczko said:
Okay everyone. I am working on an optimized 2.6.27 until we can get .29 ported over. But I figure, since I am fairly new to the kernel world, how can we get started porting this bad boy over? I have been looking through the source code but am somewhat lost as to where to get started. I figure if we are able get this going we can make a github account and have the progress set up for everyone. All you devs wanna join in?
Click to expand...
Click to collapse
Seems like I just read someones already got a github setup. Can we branch instead of running 2 accounts if this is the case?
I am also very new to the whole kernel. I think I have actually only compilied 3 succesful linux kernels in my short life. Attempted others, but I usually get lazy or run out of time.
Kcarpenter said:
Seems like I just read someones already got a github setup. Can we branch instead of running 2 accounts if this is the case?
I am also very new to the whole kernel. I think I have actually only compilied 3 succesful linux kernels in my short life. Attempted others, but I usually get lazy or run out of time.
Click to expand...
Click to collapse
If someone has made a github project please let me know. I havent made a 2.6.29 github project yet. I am currently doing one for 2.6.27.
I created a 2.6.27 repo this morning when the source was released. And I've checked out 2.6.29, just haven't set it up in github.
Really?
What's the difference between the android kernel and the regular linux kernel? It seems their version numbers are closely related. So why not go up to the newest stable (2.6.32.5)?
lazydev said:
What's the difference between the android kernel and the regular linux kernel? It seems their version numbers are closely related. So why not go up to the newest stable (2.6.32.5)?
Click to expand...
Click to collapse
It's not that simple. For starters we have to copy over the drivers for our phone and make sure they compile correctly. On top of that HTC modified quite a bit of the kernel. Porting it over will happen but it may take some time. Like I said before I am new to the linux kernel deal but I do know it is more difficult than it seems.
I'd say a completely functional port will take roughly 2 weeks time for a hobbyist. I'm not sure though as I'm still new to messing with linux kernels. I'm looking into a port of my own. Debating 2.6.29 or porting the android specific bits to a newer linux kernel. Chances are porting the hero specific stuff to the android 2.6.29 kernel source will be much simpler. It sucks I'm on my laptop at work and it isn't running linux so no compiling, diff patching or coding for me tonight. I wish I was a bit more profficient with C programming too. I guess now I have a good reason to do just that.
lazydev said:
What's the difference between the android kernel and the regular linux kernel? It seems their version numbers are closely related. So why not go up to the newest stable (2.6.32.5)?
Click to expand...
Click to collapse
edit: didnt release chuckriczko answered your question..
obelisk79 said:
It sucks I'm on my laptop at work and it isn't running linux so no compiling, diff patching or coding for me tonight.
Click to expand...
Click to collapse
Maybe it's time to start carrying around a LiveUSB distro of Linux on a flash drive
gu1dry said:
Maybe it's time to start carrying around a LiveUSB distro of Linux on a flash drive
Click to expand...
Click to collapse
no kidding... I wasn't expecting to wake up to a new release. Of course I could just run linux on my laptop and call it a day
Yeah, the reason it's better to start with .29 than jump to .32, because a lot of the work has already been done for us in .29. In fact, if you really investigate the kernel source they released, vs the kernel on our phones, you'll notice that HTC has already backported some of the .29 changes in the android-msm-2.6.29 branch into the source they released, which was *not* initially the case in the kernel that they shipped.
What we need to do to get .29 actually working, is the opposite: forward-port the HTC changes for hero/c into the .29 source.
FYI: got an initial codebase that compiles, but does not boot yet:
http://github.com/jhansche/kernel_msm/commit/19a2d673867a8e11b98cce399ed89c94811ebf77
Started from android-msm-2.6.29 branch, with a few modifications that HTC made in our code, ported over (not all of them, mind you). If anyone has any suggestions for debugging why the kernel doesn't boot, I'm glad to hear them If I had a serial debug cable, that would be useful, cause then it would work as a serial console. But for now all I have to go on is the fact that it dies *before* ram_console can be initialized (even with early-init enabled).
I've also disabled several pieces of hardware in the interest of just getting a clean compile -- namely headset, 3.5mm audiojack, EID mddi client (lcd panel) has not been copied over yet, and some other stuff.
maejrep said:
FYI: got an initial codebase that compiles, but does not boot yet:
http://github.com/jhansche/kernel_msm/commit/19a2d673867a8e11b98cce399ed89c94811ebf77
Started from android-msm-2.6.29 branch, with a few modifications that HTC made in our code, ported over (not all of them, mind you). If anyone has any suggestions for debugging why the kernel doesn't boot, I'm glad to hear them If I had a serial debug cable, that would be useful, cause then it would work as a serial console. But for now all I have to go on is the fact that it dies *before* ram_console can be initialized (even with early-init enabled).
I've also disabled several pieces of hardware in the interest of just getting a clean compile -- namely headset, 3.5mm audiojack, EID mddi client (lcd panel) has not been copied over yet, and some other stuff.
Click to expand...
Click to collapse
Great work! As I said before I am new to this linux kernel stuff and don't think I can help but I am cloning the repo so I can take a look anyway.
Any progress with getting it to boot?
Any update on this project?
I have also been curious about this for a couple of days, just didn't want to sound pushy to the devs... hope theyre seeing progress.
theoottesen said:
I have also been curious about this for a couple of days, just didn't want to sound pushy to the devs... hope theyre seeing progress.
Click to expand...
Click to collapse
I checked the githup out. still doesn't boot
Yeah, I've been hitting a brick wall trying to get some kind of indication that something is happening... On .27 I lucked out by somehow getting it to go past the ram console, then reboot, so I could see the panic messages on /proc/last_kmsg. But in .29, I can't even write directly to the ram console memory space in a pure_init section. The problem is that there's no way to know how far it's getting in the boot process. So we're really just booting blindly.
On top of that, the android-msm-2.6.29-nexusone branch has non-QSD8k bugs (that is, if you select that it's an MSM device, not a QSD device, it won't compile without fixing stuff in their acpu code for arm11, MDP22 code paths, etc. it's like the nexusone branch was only ever tested with scorpion, not arm11 (even though it has the board files for sapphire, so you would expect it to compile for sapphire)
maejrep said:
Yeah, I've been hitting a brick wall trying to get some kind of indication that something is happening... On .27 I lucked out by somehow getting it to go past the ram console, then reboot, so I could see the panic messages on /proc/last_kmsg. But in .29, I can't even write directly to the ram console memory space in a pure_init section. The problem is that there's no way to know how far it's getting in the boot process. So we're really just booting blindly.
On top of that, the android-msm-2.6.29-nexusone branch has non-QSD8k bugs (that is, if you select that it's an MSM device, not a QSD device, it won't compile without fixing stuff in their acpu code for arm11, MDP22 code paths, etc. it's like the nexusone branch was only ever tested with scorpion, not arm11 (even though it has the board files for sapphire, so you would expect it to compile for sapphire)
Click to expand...
Click to collapse
So if I understand correctly, the devs that worked on the kernel for the Nexus One got lazy and never tried to see if it compiled on the Sapphire?
If they were developing the kernel for the nexus id hardly call them lazy for not taking the time to check it on other devices.

[Q] Acer Liquid mt CyanogenMod 9

We (Acer S120 Liquid Metal owners) have a little problem with porting CyanogenMod 9. There is a port, a really good one, but the camera and mobile data aren't functioning. The only developer responsible for the port has bricked his Liquid Metal, so now we are left without a dev. I offered the developer my help, but I have no experience in kernel/driver programming, so I'm not very useful.
I don't know about the state of the baseband (the dev says it just won't work), but the camera problem is a little bit mystic. The dev (Lens_flare) told me:
I doubt it could be something to do with native_start_video ioctl(as it is not working neither on htc lib, which allocates buufers perfectly, nor on huawei lib with my workaround), which is faulty. In huawei case I got something like ioctl fail cause no such file or directory, but damn acer just hide what file it meant.
Click to expand...
Click to collapse
Links:
Original thread (MoDaCo)
Thread in acer-club.ru (closed)
Device tree
Kernel
The community is ready to donate a device and money to the developer, so don't be shy.
bump
I agree, bump of the gods.
I shall bump yet again, I'm not ready to jump ship yet.

Strip it down and Make it Work

Hey, I'm a noob, let's get that out of the way first.
Alright, so I'd like to know, why is it so hard to get special ROMs working on certain devices?
For example, I have an Evo 3D (HTC Evo V 4G, whatever), so why is it so hard to get, say, stock ICS running on it?
Inthe end, isn't the hardware all the same, other than say processors and screen size? To get a stock ICS ROM working, couldn't you just pull it off of a similar phone with an S3 processor and a 4.3 inch screen?
Or is it not that simple? Are different codes baked into the hardware that make it impossible to just modify the pixel density, size of the screen and have the ROM work with the processors?
I understand the cameras are different, hence cameras not working on early builds of CM9... but considering many phones run the same processors, couldn't they just all work?
Please explain... thanks, thebeastglasser.
thebeastglasser said:
Hey, I'm a noob, let's get that out of the way first.
Alright, so I'd like to know, why is it so hard to get special ROMs working on certain devices?
For example, I have an Evo 3D (HTC Evo V 4G, whatever), so why is it so hard to get, say, stock ICS running on it?
Inthe end, isn't the hardware all the same, other than say processors and screen size? To get a stock ICS ROM working, couldn't you just pull it off of a similar phone with an S3 processor and a 4.3 inch screen?
Or is it not that simple? Are different codes baked into the hardware that make it impossible to just modify the pixel density, size of the screen and have the ROM work with the processors?
I understand the cameras are different, hence cameras not working on early builds of CM9... but considering many phones run the same processors, couldn't they just all work?
Please explain... thanks, thebeastglasser.
Click to expand...
Click to collapse
Is not that easy! I'm an EVO user/rom porter and I hear this alot where users such as yourself think is an easy process BUT is not. Same processor, same screen size maybe the same BUT at times the kernel is not there. Either the kernel for the device doesn't support ROM A or ROM B and therefore it can't be ported to whatever device or the libs keep it from running half way decent.....i.e WiFi doesn't work, sound is **** up or whatever the case maybe...just not functional to say the least.
Take for example Sense 4.0 on the One V....it was ported to the EVO4g and the ROM barely works! Both the One V and the EVO4g have similar hardware but one runs Sense 4.0 like a dream and the other one struggles with simple things like WiFi and Sound.
Now I'm sure someone else with a bit more knowledge on this can get into the specifics and the why's and what's of WHY this can't happen BUT that's it in a nut shell.....the kernel and 9/10 times libs
See ya around dude!
Hey first off, thanks! Second...
Another question then. If they all have relatively similar hardware, why isn't it that a universal kernel for similar phones can't be created?
Or better explained, what about the phone, makes it so that the kernel doesn't work? Or why couldn't you just take the kernel from device A and shove it on device B?
Sorry if I'm overloading you with questions, but hey I'm curious. Ya know?
EDIT: Or if they're practically both the same phones, why is it that you can't just take the ROM AND the kernel from phone A and put it onto phone B?
thebeastglasser said:
Hey first off, thanks! Second...
Another question then. If they all have relatively similar hardware, why isn't it that a universal kernel for similar phones can't be created?
Or better explained, what about the phone, makes it so that the kernel doesn't work? Or why couldn't you just take the kernel from device A and shove it on device B?
Sorry if I'm overloading you with questions, but hey I'm curious. Ya know?
EDIT: Or if they're practically both the same phones, why is it that you can't just take the ROM AND the kernel from phone A and put it onto phone B?
Click to expand...
Click to collapse
It's the manufacturer of the device who would need to release the kernel sources for the certain firmware version which they won't do continuously. In other words, device A may get ICS, hence the kernel sources may be released, but device B may be stuck with gingerbread and may not have a kernel which supports ICS. Back-porting can be done, but in many cases it is very difficult and in the end there still could be a lot of bugs.
You can't just take a kernel and "shove" it in another device. If you did this, it's quite likely nothing would work. The device would not even boot. Remember, the kernel is the center of android (Linux), so everything needs to be "linked" and correspond with each other exactly for it to work (I'm trying to make it as simple as possible ).
If they are the same devices, that would not be necessary. They would use the same roms/kernels. If they are just very similar (e.g. the a100 and a500) you may have some luck with the roms, but not the kernel. Some a500 roms can be flashed onto an a100 and work flawlessly BUT the device's original kernel must be restored for the device to boot.
Theonew said:
It's the manufacturer of the device who would need to release the kernel sources for the certain firmware version which they won't do continuously. In other words, device A may get ICS, hence the kernel sources may be released, but device B may be stuck with gingerbread and may not have a kernel which supports ICS. Back-porting can be done, but in many cases it is very difficult and in the end there still could be a lot of bugs.
You can't just take a kernel and "shove" it in another device. If you did this, it's quite likely nothing would work. The device would not even boot. Remember, the kernel is the center of android (Linux), so everything needs to be "linked" and correspond with each other exactly for it to work (I'm trying to make it as simple as possible ).
If they are the same devices, that would not be necessary. They would use the same roms/kernels. If they are just very similar (e.g. the a100 and a500) you may have some luck with the roms, but not the kernel. Some a500 roms can be flashed onto an a100 and work flawlessly BUT the device's original kernel must be restored for the device to boot.
Click to expand...
Click to collapse
I have the strangest feeling I just tried to jump into the shallow end of the swimming pool, and yet instead was shot out of a cannon into the middle of the sea without a scuba diver's suit... If only I could understand this more!
thebeastglasser said:
I have the strangest feeling I just tried to jump into the shallow end of the swimming pool, and yet instead was shot out of a cannon into the middle of the sea without a scuba diver's suit... If only I could understand this more!
Click to expand...
Click to collapse
Think about it this way. The Android OS could be run on a number of different devices that run slightly different hardware such as cameras, touchscreens, processors, etc...but the OS has to be able to communicate properly to that hardware using device drivers. Just like Windows from a 30000 foot view. It can run on a Dell or Acer computer, but must have the proper drivers.
If the manufacturer's of those devices do not write ICS drivers or preferably furnish their source code, then it is incredibly difficult if not impossible for someone without the internal company documentation to write such a driver.
mf2112 said:
Think about it this way. The Android OS could be run on a number of different devices that run slightly different hardware such as cameras, touchscreens, processors, etc...but the OS has to be able to communicate properly to that hardware using device drivers. Just like Windows from a 30000 foot view. It can run on a Dell or Acer computer, but must have the proper drivers.
If the manufacturer's of those devices do not write ICS drivers or preferably furnish their source code, then it is incredibly difficult if not impossible for someone without the internal company documentation to write such a driver.
Click to expand...
Click to collapse
Ohhh... so say you decided to put your own little phone together according to your own prerequisites, it'd be simple for you to do something on it, but not so much for someone who only has the hardware to look at... correct?
Another question, why is it so easy to port things onto Nexus Devices? Are they just more compatible with all drivers? As I've heard from one of my friends that he has a fully working Sense 4 ROM on his Nexus S... and yet it's tough to find one for my Evo V.
EDIT: I'm out of "thanks" I'll give you one as soon as I get some more...
thebeastglasser said:
Ohhh... so say you decided to put your own little phone together according to your own prerequisites, it'd be simple for you to do something on it, but not so much for someone who only has the hardware to look at... correct?
Another question, why is it so easy to port things onto Nexus Devices? Are they just more compatible with all drivers? As I've heard from one of my friends that he has a fully working Sense 4 ROM on his Nexus S... and yet it's tough to find one for my Evo V.
EDIT: I'm out of "thanks" I'll give you one as soon as I get some more...
Click to expand...
Click to collapse
Hmmm, I am not as familiar with the Nexus devices, but I suspect that Google has released the hardware spec details and the source code for the drivers for Nexus phones, so the source code can be modified and included for the ports. HTC unfortunately has not been as open with some of their phones.
If you were to put a phone together, you would need to use hardware in it that you had access to the specs and source code for. This is not a great analogy, but I think it will serve. The camera app tells the OS, "take a picture", then the OS tells the driver, "make the camera take a picture", and the camera device driver controls the hardware parts like the shutter, the focus, and zoom to cause the picture to be taken and handed back to the OS to be saved and then the OS notifies the app, "here is your picture, awaiting next command".
If you do not have access to the camera driver source code and camera hardware specs to create a driver, or an actual driver from the camera manufacturer, then you are missing the crucial third part and you cannot make the camera take a picture even if you get an OS loaded and an app installed there.
Check out The Tricorder Project for an excellent example. Create your own Star Trek "tricorder" with various sensors and a touchscreen that runs on Linux for around $200 and some work putting it together.
thebeastglasser said:
Ohhh... so say you decided to put your own little phone together according to your own prerequisites, it'd be simple for you to do something on it, but not so much for someone who only has the hardware to look at... correct?
Another question, why is it so easy to port things onto Nexus Devices? Are they just more compatible with all drivers? As I've heard from one of my friends that he has a fully working Sense 4 ROM on his Nexus S... and yet it's tough to find one for my Evo V.
EDIT: I'm out of "thanks" I'll give you one as soon as I get some more...
Click to expand...
Click to collapse
Its easy to develop for nexus devices since Google always releases their sources and those devices are easily unlockable (the bootloader). This is one reason why they are usually referred to as development/developer devices.
So in other words, the software communicates with the hardware, but without the proper code embedded in the hardware, it's not possible for the software to communicate with it? And without source code given from the developer of the hardware, you're making software that hypothetically should work, but because of the different device hardware it may or may not work...?
And that's also big because some guy on the portal recently found out that all of the eight mega pixel cameras on HTC devices are the same, so it should now be easy to use working cameras on ported and newly created ROMs...
Am I getting anywhere with this?
thebeastglasser said:
So in other words, the software communicates with the hardware, but without the proper code embedded in the hardware, it's not possible for the software to communicate with it? And without source code given from the developer of the hardware, you're making software that hypothetically should work, but because of the different device hardware it may or may not work...?
And that's also big because some guy on the portal recently found out that all of the eight mega pixel cameras on HTC devices are the same, so it should now be easy to use working cameras on ported and newly created ROMs...
Am I getting anywhere with this?
Click to expand...
Click to collapse
Yes, you got it a bit better now. The software needs to have the same codes embedded in the hardware to correspond with it. The source code is not from the hardware but of the software (kernel source).
Yes if the ROM was ported to other HTC devices with the same/similar camera (some libs will still need to be changed though).
Theonew said:
Yes, you got it a bit better now. The software needs to have the same codes embedded in the hardware to correspond with it. The source code is not from the hardware but of the software (kernel source).
Yes if the ROM was ported to other HTC devices with the same/similar camera (some libs will still need to be changed though).
Click to expand...
Click to collapse
Alright that makes a bit more sense. Thanks for your help guys!

X86 Atom Android tablet BLISS ROM. Kernel source & HALS, is tha enough to get going?

X86 Atom Android tablet BLISS ROM. Kernel source & HALS, is tha enough to get going?
I have a TX201LA tablet runs Android 4.2. Its a dual device 2 systems in 1. The tablet half is what i am focusing on. NOT the dock as I have windows 10 running fine on that half. The tablet is nearly useless as it is on android 4.2. I've been exploring a few options for getting an android update. My tablet runs an atom x86 cpu with 2GB of ram and is quad core cloevertrail CPU x2560. Plenty of power to run a newer android or even chromeOS, cloudready, or remixOS. I've explored those options but Bliss is the most straight forward as there are already x86 builds of Bliss. I think support should be relatively easy to add for my device.
There are a few caveats however I know ways to overcome them if I can get a rom to load.
1. I dont have a unlocked bootloader but I maybe able to unlock using zenfone 5 unlock method. Still no custom rom has ever been made for my tablet, only for similar devices like zenfone 5, galaxy tab 3 10.1, & dell venue 7.
2. Once I get it unlocked, I can load CWM or use flashfire. My tablet boots with Droidboot, which I can replace with CWN via again a zenfone 5 exploit that I have confirmed works with my tablet.
3. Would bliss load things like my LCD driver, touch screen etc? That is possibly the biggest issue. I have the kernel code here, UPDATED: http://support.asus.com.cn/Download....1LAF&p=3&s=587 OR here original: http://support.asus.com.cn/Download....01LA&p=3&s=587
3A. If the kernel code has all the HALS isnt it possible to build a Bliss rom that would be loaded via CWM/Flashfire and then boot-able?
3B. Could the Bliss team build a rom with the kernel code listed above, that I could then test? Or would the bliss team need to the device (I would think not, i hope). If a rom could be created I would GLADLY donate to BLISS.
Love to find out if this is possible. THANKS
madhits45 said:
I have a TX201LA tablet runs Android 4.2. Its a dual device 2 systems in 1. The tablet half is what i am focusing on. NOT the dock as I have windows 10 running fine on that half. The tablet is nearly useless as it is on android 4.2. I've been exploring a few options for getting an android update. My tablet runs an atom x86 cpu with 2GB of ram and is quad core cloevertrail CPU x2560. Plenty of power to run a newer android or even chromeOS, cloudready, or remixOS. I've explored those options but Bliss is the most straight forward as there are already x86 builds of Bliss. I think support should be relatively easy to add for my device.
There are a few caveats however I know ways to overcome them if I can get a rom to load.
1. I dont have a unlocked bootloader but I maybe able to unlock using zenfone 5 unlock method. Still no custom rom has ever been made for my tablet, only for similar devices like zenfone 5, galaxy tab 3 10.1, & dell venue 7.
2. Once I get it unlocked, I can load CWM or use flashfire. My tablet boots with Droidboot, which I can replace with CWN via again a zenfone 5 exploit that I have confirmed works with my tablet.
3. Would bliss load things like my LCD driver, touch screen etc? That is possibly the biggest issue. I have the kernel code here, UPDATED: http://support.asus.com.cn/Download....1LAF&p=3&s=587 OR here original: http://support.asus.com.cn/Download....01LA&p=3&s=587
3A. If the kernel code has all the HALS isnt it possible to build a Bliss rom that would be loaded via CWM/Flashfire and then boot-able?
3B. Could the Bliss team build a rom with the kernel code listed above, that I could then test? Or would the bliss team need to the device (I would think not, i hope). If a rom could be created I would GLADLY donate to BLISS.
Love to find out if this is possible. THANKS
Click to expand...
Click to collapse
For one, you should ask Bliss OS (x86) related questions in the Bliss OS thread: https://forum.xda-developers.com/bliss-roms/bliss-roms-development/x86-bliss-x86-pc-s-t3534657
Second, I tend to only use source dumps that maintain proper commit attribution. This is our way of giving credit where it is due (the original developers) Most of the source dumps I come across are a bunch of source code, with one commit at best titled, "initial commit" or "dump", and this to me says that there is something not trustworthy about it. I would like to see all the individual commits and changes made throughout the commit history, as this allows us to easily target changes that were made for that specific device.
If others want to go through the trouble of picking out those differences and creating a pull request with the proper attribution attached, we have no issues merging into our releases after testing.
electrikjesus said:
For one, you should ask Bliss OS (x86) related questions in the Bliss OS thread: https://forum.xda-developers.com/bliss-roms/bliss-roms-development/x86-bliss-x86-pc-s-t3534657
Second, I tend to only use source dumps that maintain proper commit attribution. This is our way of giving credit where it is due (the original developers) Most of the source dumps I come across are a bunch of source code, with one commit at best titled, "initial commit" or "dump", and this to me says that there is something not trustworthy about it. I would like to see all the individual commits and changes made throughout the commit history, as this allows us to easily target changes that were made for that specific device.
If others want to go through the trouble of picking out those differences and creating a pull request with the proper attribution attached, we have no issues merging into our releases after testing.
Click to expand...
Click to collapse
Did you look at my source to see if this is a problem? I'm not exactly sure how it needs to look but is this something you have found to be the case with other asus sources in the past? I'd be surprised if it was. I'd love to get a bliss rom for my tablet but I figured this would not be so easy even with x86 support being its base.
madhits45 said:
Did you look at my source to see if this is a problem? I'm not exactly sure how it needs to look but is this something you have found to be the case with other asus sources in the past? I'd be surprised if it was. I'd love to get a bliss rom for my tablet but I figured this would not be so easy even with x86 support being its base.
Click to expand...
Click to collapse
By the time I read your post, the links didn't work. And of the Asus source dumps I've seen in the past, they haven't included any git history
electrikjesus said:
By the time I read your post, the links didn't work. And of the Asus source dumps I've seen in the past, they haven't included any git history
Click to expand...
Click to collapse
Hey Electrik jesus, Here is the new link: https://www.asus.com/2-in-1-PCs/ASUS_Transformer_Book_Trio_TX201LA/HelpDesk_Download/
I'm from Michigan to.. So hopefully you can help another Michigander lol with a bliss build. Asus recently changed up there whole support site and the source code used to only be available on the international site now it seems its also on there US site. The Tx201LA was sold more overseas then in the US. It so similar to about 50 other devices (same Soc) asus made but mostly a lot of them are phones.
madhits45 said:
Hey Electrik jesus, Here is the new link: https://www.asus.com/2-in-1-PCs/ASUS_Transformer_Book_Trio_TX201LA/HelpDesk_Download/
I'm from Michigan to.. So hopefully you can help another Michigander lol with a bliss build. Asus recently changed up there whole support site and the source code used to only be available on the international site now it seems its also on there US site. The Tx201LA was sold more overseas then in the US. It so similar to about 50 other devices (same Soc) asus made but mostly a lot of them are phones.
Click to expand...
Click to collapse
I checked it out, and it is just as I was expecting. no .git folder or anything to show what commits were made on top of the standard kernel source. I guess the only thing we can do about it though is set an example of how to do it...
Example of how a kernel commit history could look: https://github.com/BlissRoms-x86/platform_kernel_common/commits/k4.15.10-ipts
electrikjesus said:
I checked it out, and it is just as I was expecting. no .git folder or anything to show what commits were made on top of the standard kernel source. I guess the only thing we can do about it though is set an example of how to do it...
Example of how a kernel commit history could look: https://github.com/BlissRoms-x86/platform_kernel_common/commits/k4.15.10-ipts
Click to expand...
Click to collapse
So if I understand you correctly the source code needs to be gone through to be pick out the comments etc and then it can be pulled into the bliss x86 source for merging? I think this is above my skill set, what can I do if I dont have the skills to do this?
madhits45 said:
So if I understand you correctly the source code needs to be gone through to be pick out the comments etc and then it can be pulled into the bliss x86 source for merging? I think this is above my skill set, what can I do if I dont have the skills to do this?
Click to expand...
Click to collapse
It's more of a prevention on our end from not giving attribution to the original author. Let's say that someone who worked on a linux project, got the GPU to finally work right with the chipsets in your ASUS. I would like to see that one guy's additions, but even moreso, I would like to see ASUS show that they used his work. Because for all we know, there are hundreds of commits in there that were added, and some of that could be work that someone else deserves to be reimbursed for. The fact that they removed the .git folder shows that they have something to hide. Calling it "trade secrets" shouldn't be allowed when it comes to kernel code.
electrikjesus said:
It's more of a prevention on our end from not giving attribution to the original author. Let's say that someone who worked on a linux project, got the GPU to finally work right with the chipsets in your ASUS. I would like to see that one guy's additions, but even moreso, I would like to see ASUS show that they used his work. Because for all we know, there are hundreds of commits in there that were added, and some of that could be work that someone else deserves to be reimbursed for. The fact that they removed the .git folder shows that they have something to hide. Calling it "trade secrets" shouldn't be allowed when it comes to kernel code.
Click to expand...
Click to collapse
So its about credit and royalties? I understand being upset at asus because they did not or have not credited someone but what can i do about that? Am I stuck at not being able to have my device supported because asus is a bad actor? Is there any way I can get support?
madhits45 said:
So its about credit and royalties? I understand being upset at asus because they did not or have not credited someone but what can i do about that? Am I stuck at not being able to have my device supported because asus is a bad actor? Is there any way I can get support?
Click to expand...
Click to collapse
There is, you could take the route Jakeday has for the Surface line. Since we don't know the author, he created patches to add the support needed to the kernel. It's far from the easy road, but this is what helps developers far more than any source dump
https://github.com/jakeday/linux-surface
electrikjesus said:
There is, you could take the route Jakeday has for the Surface line. Since we don't know the author, he created patches to add the support needed to the kernel. It's far from the easy road, but this is what helps developers far more than any source dump
https://github.com/jakeday/linux-surface
Click to expand...
Click to collapse
What I am confused about is this.
1. Is it a protocol thing? IE asus did not give credit and thus bliss refuses to add support unless they do.
OR
2. Is it an actual road block? IE we cant use the source code as is because it needs more information or reformatting?
Or is it both with more weight on #2?
If its #1 then can we make an exception? and if it is #2 why isnt there some sort of code AI that can redo the code to make it conform to the needed edits, seems like that should be possible. I would hope that if it is #1 only that you would admit that is all it is and help more people instead of forcing people to work around the bureaucracy brought onto them by bad actors like asus.
madhits45 said:
What I am confused about is this.
1. Is it a protocol thing? IE asus did not give credit and thus bliss refuses to add support unless they do.
OR
2. Is it an actual road block? IE we cant use the source code as is because it needs more information or reformatting?
Or is it both with more weight on #2?
If its #1 then can we make an exception? and if it is #2 why isnt there some sort of code AI that can redo the code to make it conform to the needed edits, seems like that should be possible. I would hope that if it is #1 only that you would admit that is all it is and help more people instead of forcing people to work around the bureaucracy brought onto them by bad actors like asus.
Click to expand...
Click to collapse
It's the third option, I'm too busy to do the work for something that is more important to you than it is to me.
electrikjesus said:
It's the third option, I'm too busy to do the work for something that is more important to you than it is to me.
Click to expand...
Click to collapse
LOL.. Pretty PLEASE, with big traverse city cherrys on top.
I have also emailed asus to see if they will look at the source code again to properly format it, not likely but worth a shot.
Does this help: https://proandroiddev.com/ooga-chaka-git-hooks-to-enforce-code-quality-11ce8d0d23cb
Is the process of going through the code very time consuming? So even if using git hooks it will take time? Im still trying to understand why there is no AI that can go through it.
electrikjesus said:
It's the third option, I'm too busy to do the work for something that is more important to you than it is to me.
Click to expand...
Click to collapse
It is important for several people. I hope at some point you have enough time to be able to help us. please help.
I am revisiting this conversation after a few months, and for starters, I would like to say I'm sorry for being rude. Secondly, I would like to use this conversation to start change where we need it. Innovation is the key point here. and if any of us are to build off of one another, we must work together to make it all possible. The lack of commit attribution by OEMs is a blatant disregard for GPL and Open Source licensing. As a ROM team, I would love to work with any OEM to help them through the process of adding a proper commit history. As Bliss, we are open to taking on any new device work, and we have in the past with Udoo-x86 & PINE64, but one of our requirements is that we can release full source, commit history, etc. Everything anyone could need to build off our work.
Too many OEM's are using patents as a way to stab eachother in the back, or use it as a "competitive" road block to stop the sale other devices that may have a similar method or feature. We don't agree with this practice and believe it is driven by greed and the wants of a few, not the needs of the majority. We as Bliss will continue to do what we can to act as an example of what should be done to best facilitate the rapid development of mobile technology and software for all parties involved.

Categories

Resources