Ujanja Ni Uhai (Hustling Is Life)

Does your Huawei U8150 support multi-touch gestures?

When I bought my IDEOS, I did so knowing full well that it didn’t support multi-touch gestures. The IDEOS was attractive to me because it is a cheap Android-powered device with relatively-open hardware that would be fun to hack on; I wasn’t expecting this $100 bargain smartphone to support fancy touchscreen behavior! As far as I knew, those features were typically reserved for high-end devices. I can’t remember where I saw it first (early iPhone maybe?), but these days the “pinch to zoom” is an example of an extremely useful and pervasive multi-touch gesture.

As it turns out, some IDEOSes actually do support multi touch, but the issue is not so cut and dried. There are two factors which determine whether your Huawei U8150 supports multi touch: hardware and software. Before we start, you can test if your device already has multi-touch gestures working by going in the browser and navigating to google.com; you should be able to zoom in by using a “pinch” motion with your two fingers. If this works, you don’t need to keep reading (unless you’re curious!).

Hardware…

So far there have been reports of three different hardware touchscreens on Huawei U8150 devices: synaptics, melfas, and cypres. Of the three, only devices with a synaptics touchscreen supports multi-touch gestures. Here’s how you determine which touchscreen your device has:

In the Phone application, dial the following:*#*#2846579#*#*

… then navigate to:

ProjectMenu

4. Veneer information query

2. Apparatus type query

The touchscreen type will now be displayed on the screen. If you’re lucky yours will look like mine, on the left below 😉

Synaptics touchscreen

Melfas touchscreen

For the record, you can also get this information from the getevent command, run either via the Terminal Emulator application directly on the device, or through adb shell (and I think you need to be root).

Software…

If you have a synaptics touchscreen and multi-touch gestures aren’t working, your kernel is too old! Basically, early IDEOS ROMs didn’t support multi touch, even on synaptics hardware. Stock ROMs from Huawei did eventually ship with updated kernels but (ironically), only after Indonesian hacker tj_style had patched the U8150 kernel sources with his own multi-touch code.

Fortunately this is a software issue and can be remedied simply by flashing a new kernel which has been compiled with those patches. My kernel_huawei_u8150 repository on github, for example, has pre-compiled boot images which will do the trick (look in the Downloads section). If you’re interested in trying it, you can take the plunge below!

Take the plunge (flash a multi-touch enabled kernel)…

Flashing a kernel to your U8150 is safe and easy, but does require a bit of setup; you’ll at least need to download fastboot (info, download). Once you’ve downloaded and unzipped fastboot, shut down your phone and boot into bootloader mode: while holding Volume down and the red “cancel” button, press power.

If you’ve done it properly your phone will turn on and stop at the IDEOS screen. Your phone is now in bootloader mode, essentially holding open the doors that protect its raw partitions and telling you, “Flash me!”

Create udev rules

Before you can flash, you need to make sure that your Linux user is allowed to write to the device. The udev daemon is an event-based daemon which can perform actions when devices are connected; we’ll use it to change the permissions on the device when it detects it. Create a file, /etc/udev/rules.d/60-android, with the following contents:

Now you can flash one of my boot images containing a patched kernel to the boot partition (you did download one from my U8150 kernel repository, right?). Make sure your phone is plugged in, then run something like the following:

Ta da!

You’re done! To see if it worked, point your phone’s browser to google.com try the pinch-to-zoom maneuver. Well? Did it work? Leave a message in the comments and let me know. 😉

More information…

The point of this post was to document some of the issues and history around multi-touch gesture support on IDEOS, so I’ve glossed over most of the technical details. For more information about kernels, flashing, compiling, etc, see my earlier post: Compiling custom kernels on the Huawei U8150.

Post navigation

30 thoughts on “Does your Huawei U8150 support multi-touch gestures?”

Hey,
followed up this blog from your xda and i must say…its about time a Kenyan got into the real compiling of kernels and stuff.
Honestly..im not as conversant as you are in this stuff..im just a noob..flashing roms and stuff..changing bootanimations..basic stuff..but im pretty sure im going to learn a hell lot from this blog!!
Now..about flashing kernels..can it be done via a recovery..like the Clockwork mod?

Yo! Hell yeah, we need to start a culture of hacking; not for profit, just for fun, and the pursuit of knowledge! Yeah, you can flash kernels from recovery, but you have to write a script in the “Edify” language which recovery understands. Download a custom kernel, for the Samsung Galaxy S here,and unzip it and you can learn from there :)!

i downloaded your multitouch kernel but am sure how to go about it in flashing. am using custom ROM after flashing from safcom ROM which had multitouch contrary to the ROM am using at the moment. is there a place i could download safcom ROM?

It seems that way, sir… you can see the code which enables multi-touch support for devices with synaptics hardware here. Melfas and Cypres touchscreens don’t have such support. If you were a baller C programmer you might be able to add necessary code (or backport it from a newer kernel). 😉

Alternatively, sell your phone for as much cash as you can and wait for new Huaweis to come out; they’ll be faster, sexier, and have Gingerbread out of the box!

hello, first i have to say, nice blog, no wait awesome blog, i just got an ideos the other day, and i must say, it has been alot more than i expected, i think it is the official “poor hackers” phone, im not really familliar with the android os, but if its unix based it wont be to hard to get around, just wanted to know, have you tried out dronix roms? are they stable?, plus i hear there are hacks where you can overclock to speeds upto 750Mhz and the thing that really got me exited is that you can use its usb in host mode… if that is possible i cant see any limits to what the phone can do…

Well, Android is not “Unix” based… it uses a Linux kernel, and a mixed Java/C userland. If you want to draw comparisions to Unix-like OSes, Android is kinda like a heavily-modified Linux distribution (Linux kernel, init scripts, and includes similar userland binaries like ls, chmod, mkdir, sh etc). Yep, the “poor hackers” phone indeed!

Hi Alan, I owned a U8150 on Froyo v2.2 and been longing for multitouch function. I have checked my phone and its has synaptic screen. So I proceed to follow your steps to flash a new kernel. I have downloaded the Fastload and noma_20110903v83_boot.img file as recommended. I even managed to start my phone in the bootloader mode. Being a newbie, I can’t seem to run the command as mentioned by you.
1. Where do I store the 2 files? in my phone or computer? both the files are stored in my root c: now.
2. Where do run the command ~/src/fastboot flash boot noma_20110711v26_boot.img? do I use Windows Command Prompt? Pls write the complete command line if u can…..
3. Is this process consider ‘rooting’?
TQ vm and will wait for your reply

Hey, Jeff. You need to flash the boot image with fastboot. You’ll have to find a copy of it somewhere, just google it. If you’re on Linux you can use the one I linked to above… `~/src/fastboot flash boot noma_20110711v26_boot.img` is a command for Linux, which assumes you’ve downloaded fastboot into a folder called “src” in your home folder. If you’re on Windows I have no idea, but start by downloading fastboot for Windows and work from there. These commands are run from your computer, by the way, not from the phone. 🙂

This isn’t rooting… we’re just installing a newer kernel. The kernel is the part of the OS which detects and interacts with the device’s hardware, and then provides abstractions for higher-level applications to do things like write to the disk and draw to the screen, etc. Huawei’s early kernels didn’t support multi-touch, so that’s why we need to flash this 🙂

Hi Alan….thanks very much for your explanation….hmmmm….looks like now I have to first find a way to run Fastboot in Windows XP, then flash your new kernel image file from there, right?
Can your image file be used in Windows XP too?
Again, thanks very much…really appreciate it…

Yeah, start by finding fastboot for Windows. It exists, just google around a bit. The boot image isn’t OS dependent, as long as you have fastboot you can send it to your phone, regardless of whether you’re on Mac OS X, Windows, or Linux. All you need is fastboot, baby!

Hi…thanks so much for the info. I did what you said — I ran the diagnostics to make sure that I had the synaptics screen. Then, I downloaded your latest kernel image and fastboot. I ran the fastboot utility as described (which happened successfully), rebooted the phone as described, but no pinch-zoom still! Is there anything you can think of for me to check to see why it still doesn’t work? Thanks!

Thanks for your reply. Do I need to do something special to get the phone to boot up in the custom kernel? You are right that that’s likely the issue, but I’m not sure what to do about it. The kernel version says 2.6.32.9-perf, but what I downloaded (and thought I booted) from you is noma_20110903v83_boot. Yes, I’ve tried multi-touch in the browser, while looking at pictures, etc. Any guidance you can provide will be greatly appreciated!

Hmmm, well all the Huawei Froyo (Android 2.2) kernels are version “2.6.32.9-perf”… but does it say “aorth” after that?

The browser’s the best test I know of for seeing if multi touch is working, but also try a different home screen launcher, like Zeam. See, the kernel has to support it, but also the apps. Early Huawei ROMs didn’t have the right kernel OR apps which supported multi touch!

Allan? thank you very much, your Kernel works perfectly with my Synaptic touch screen phone, but it was stolen the one i now have is the melfas type touchscreen, please What is the code to making it similar with the synaptic? im good in coding i need the steps thanks

Hey, Usman. You probably need to add a udev rule to allow your user to write to the device. I’ve edited the post to add instructions for doing that (I overlooked it when I initially wrote the post). After you add the udev rule make sure to unplug/replug your phone, then fastboot should work.

No multi touch for you, my friend! Get used to double tapping… 😉 hehehehe. Still, the IDEOS is a great phone because it’s got Wifi, bluetooth, SD card, and it’s easily hackable (in the developer sense of the word). 🙂

Congrats for all the progress on hacking and improving this little device. I have one question. My friend damaged digitizer and purchased replacement one. We didn’t know that there were two versions. He replaced the broken one but capacitive keys appear to not be working. His device is on stock firmware (Croatian T-Mobile 2.2.1) and replacement digitizer is from Melfas.

Can it be that the kernel (or some part of the software) is remapping keys in such way they do not work because Synaptic->Melfas transition?

We don’t know for certain that his previous one was from Synaptic but most of device sold by our provider were.

Hmm, I don’t recall there ever being multitouch for Melfas. The Gingerbread ROM in that blog post is almost 1 year old. “Gingerman” ROMs were early versions of CyanogenMod 7 for that device, and there are much better ports of CyanogenMod for the U8150 to be found at CyanogenMod’s download page, http://get.cm.

I know it maybe unrelated but before I loaded custom roms on my 8150 it reported it was a synaptics touch but if i run getevent in the shell it reports a melfes device with custom roms now ,the thing is if I load any CM9 or CM10 I end up with a pointer not a finger type touch?,Why?
So my question is the kernel the cause of this hardware issue? will your kernel fix this?
is the factory kernel which shipped with my phone the one I should load over the custom rom?
or is there a file somwhere which maps the devices to events in the dev folder?

Have I made too bigger jump in connecting these different things?,help for a new phone fiddler?
thanks, chris

Yeah, I think you made a too big jump hehe. I don’t know why the touchscreen would be reported differently in different ROMs, that seems strange. Does multitouch still work? I can’t speak about CM9/CM10 on U8150… I never tried it. CM7 was painful enough!

It seems nobody has yet encountered the issue I had. Multi-touch didn’t work in the browser, google maps, etc. even though a multi-touch test app detected both touch points. It turned out I had to add a touchscreen.multitouch.xml file to my permissions directory. Here’s how you can do it with adb (I used a terminal emulator on my phone because I didn’t have adb, the idea is the same):