Nov 22nd Update: I posted a video of a proof-of-concept implementation of multitouch on the g1 in a post today. The contents of this post are still valid – but it is easier to see proof in the implementation video for some people than it is to read log files.

So there has been a lot of speculation about if the G1 screen can handle multitouch or not. Most of the people claiming it can handle it have posted links to some crazy videos showing it doing some kind of thing inside of android – but that approach doesn’t hold much weight with me. If the driver doesn’t have multitouch, then obviously nothing in the OS can make use of multitouch…

I’d long since dismissed the possibility of the G1 having multitouch until ionstorm in #android posted some links confirming the G1 uses a synaptics touch screen and that synaptics likes to brag about the multi-touch on their screens.

Then unix_infidel pointed out that there was some stuff in the synaptics driver that was commented out… which – was true. (the file is located in drivers/input/touchscreen/synaptics_i2c_rmi.c of the msm kernel source – you can see the git info for the msm kernel online)

By uncommenting a bunch of lines in the synaptics touchscreen driver, and recompiling my kernel and replacing my boot.img – I was able to enable the debug logging of the touch input that tracks 2 fingers.

The following code is what is printing out the debug info that the linked log snippets show:

printk("x %4d, y %4d, z %3d, w %2d, F %d, 2nd: x %4d, y %4d, z %3d, w %2d, F %d, dx %4d, dy %4d\n",
x, y, z, w, finger,
x2, y2, z2, w2, finger2,
dx, dy);

Here’s some of the debugging output:
One finger swirling around
One finger held constant, the other finger swirled around
2 Fingers flicking left, then right
2 fingers rotating counter-clockwise (kind of… that motion is rather hard to do)
2 fingers (separate hands) – one finger moving up, while the other moves down
2 fingers – one held constant and varying pressure – another finger tapping at various points on the screen and also varying pressure

So… Here is the conclusion:
The G1 screen can definitely track 2 fingers. Why Android does not make use of this is an exercise for the reader to answer. (Patents is the most obvious answer. But I’m sure more interesting conspiracy theories can be concocted)

UPDATE: in #android – morrildl – who works for google but probably doesn’t officially speak in any capacity for Google brought up a few interesting points with regard to this:

  • HTC has specified that the G1 will have a single-touch screen. (This is significant, because their spec is for single touch for the G1, this means that they could in the future source touchscreens that are not multi-touch capable – so just because a certain run of G1s might have a multitouch capable screen, they have the liberty to swap out parts [and they may already have G1s out in the field that don't have a multi-touch capable screen])
  • The other issue is with how the driver reports the width of the touch. It appears that the “w” element is the same on both of the fingers (altough this might just be a quirk in the driver code that was commented out – since it does seem to be based on pressure and putting fingers on opposite corners and pressing lightly still shows a 1 for “w” – but placing 2 fingers close together and pressing hard will show a 15 for “w” – so I’m not entirely convinced of this)

It sounds like the road to multitouch on the G1 could now be a little more complicated. I’m not sure if HTC could ever revise the specs of the G1 without changing the model name… so even if the hardware is identical they might have to have a G1m or something? (who knows).

Tags: , ,

39 Comments to “Proving the G1 screen can handle multi-touch”

  1. Jeff says:

    Impressive work! I wonder if Microsoft is licensing Apple’s patents for Windows 7, or if there’s a way to work around this. Absurd that something so obvious is patentable.

  2. Ventrix says:

    I had no doubt that android would support multi-touch.
    I suppose it is not tested enough to be published yet.

  3. Adrian n. says:

    Ha! You’ve done it now! Cool cool cool!

  4. RyeBrye says:

    Yeah, it is interesting. Does anyone know if Apple owns the patents or if Synaptics does?

  5. [...] hardware end. Whilst tearing his G1’s workings apart line-by-line, a crafty coder going by RyeBrye came across an interesting artifact. It seems the driver for the Synaptics touchscreen has some [...]

  6. [...] end, at least. Whilst tearing his G1’s workings apart line-by-line, a crafty coder going by RyeBrye came across an interesting artifact. It seems the driver for the Synaptics touchscreen has some [...]

  7. [...] folks over at RyeBry have done some sleuthing and found that with some work, the G1 shows it should be capable of two finger touching. Then [...]

  8. [...] only Android phone at the moment – CAN do MultiTouch. This was discovered and published first by RyeBrye over his blog. He found some interesting bits of ‘uncommented’ code in the Synaptics touchpad [...]

  9. [...] folks over at RyeBry have done some sleuthing and found that with some work, the G1 shows it should be capable of two finger touching. Then [...]

  10. [...] užkomentuotų eilučių ekrano tvarkyklėje. Ištrynus komentarus ir atlikus keletą eksperimentų paaiškėjo, kad ekranas sugeba priimti ir apdoroti dvigubus lietimus bei [...]

  11. [...] the kernel, reversing the polarity and getting the 1.21 gigawatts necessary (or something), RyeBrye managed to track simultaneous finger presses at the same [...]

  12. [...] of developers going deep to find all kind of secrets hidden in the source code. According to this post, the T-Mobile G1, or at least part of them, can handle multi-touch.  The G1 screen can [...]

  13. [...] gars plutôt pleins de ressources du canal IRC #android et de RyeBrye, après s’être rendu compte que l’écran tactile Synaptic du G1 pourrait peut-être [...]

  14. [...] Source: RybeBrye Blog Posting [...]

  15. [...] Android (G1) : secrètement multitouch et va bientôt avoir le Flash 10 : http://www.ryebrye.com/ et [...]

  16. [...] do canal #android no IRC e RyeBrye trabalharam sobre as linhas de código do Android e re-habilitaram algumas linhas comentadas de [...]

  17. [...] Officially, no. the HTC G1 is spec’d to be a single-touch device. That being said, the G1 uses a Synaptics touchs module that is capable of handling two-finger responses, and blogger RyeBrye has found some clues that may lead to possible activation of multi-touch.  he says that after “uncommenting a bunch of lines in the synaptics touchscreen driver, and recompiling  my kerne… [...]

  18. [...] Nicholas Ahn • November 18, 2008 Blogger RyeBrye has found that the T-Mobile G1 outputs data suggesting that the G1’s touchscreen display has [...]

  19. [...] resourceful folks at the #android IRC channel and RyeBrye, after realizing that the G1’s Synaptic touch screen might be able to handle multiple inputs, [...]

  20. [...] T-Mobile G1硬件支持多点触摸功能 11月 19, 2008 | 5:03 上午分类:未分类 | 1 views 每当iPhone的用户与G1的用户开始争论时,iPhone用户往往会指出G1的软肋,缺乏多点触摸功能。不过实际上,根据RyeBrye研究,如果触摸屏的驱动不支持多点触摸,那么G1手机显然不可能支持多点触摸。 [...]

  21. [...] the details. Some innovators proved that the G1 and the Android OS are capable of handling multitouch gestures with a little alteration. The speculation is that Google/HTC didn’t include this [...]

  22. [...] umgeben, die dem Betriebssystem mitteilen, diesen Code nicht auszuführen. In einem Blog (Proving the G1 screen can handle multi-touch ) wird berichtet, wie das Multitouch zum Laufen gebracht wurde. Dazu musste der Treiber für die [...]

  23. Andrey says:

    Your experiment has caused heated discussion in Russian Android Community.

  24. [...] end, at least. Whilst tearing his G1’s workings apart line-by-line, a crafty coder going by RyeBrye came across an interesting artifact. It seems the driver for the Synaptics touchscreen has some [...]

  25. [...] לא משנה מה הסיבה, בעזרת הקהילה העולמית יש סיכוי טוב שבכל מקרה נמצא תמיכה לכך בעתיד. המאמר הטכני המלא נמצא כאן. [...]

  26. [...] end, at least. Whilst tearing his G1’s workings apart line-by-line, a crafty coder going by RyeBrye came across an interesting artifact. It seems the driver for the Synaptics touchscreen has some [...]

  27. [...] Per chi volesse maggiori dettagli tecnici, consiglio la lettura di questo post. [...]

  28. [...] capability that we are not to big to admit is pretty cool. A sly coder going by the name RyeBrye found synaptic driver code that was commented out and after recompiling the kernel with the code [...]

  29. Fipi says:

    From Wikipedia about apple and its patent addiction:

    Apple is currently in the process of trying to patent its “Multi-touch” technology and to trademark the term “multi-touch”.

  30. [...] uneducated speculation about whether the Android G1 could support multi-touch.  I just came across this post by a smart guy who recompiled the synaptics touchscreen driver and got it to track two fingers. [...]

  31. [...] doesn’t seem to be a standard UI paradigm on Android; neither is multi-touch, though the G1 hardware supports it. As a result, most UIs rely heavily on the menu button, which is wonderfully [...]

  32. adlercm says:

    Excellent work. You certainly have contributed wonderful and useful insights to the developer community. Thanks.

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>