• Introducing XDA Computing: Discussion zones for Hardware, Software, and more!    Check it out!

Multi Touch ? Mod Edit: Use this thread for the purpose.

Search This thread

GreatApo

Senior Member
Feb 15, 2011
1,088
660
in x8 i think that dual will be ok, when we put more than 2 fingers there is no screen to see ;)
Lol, actually I think dualtouch is just enought :)

After a hour or two spent in setting up Ubuntu properly to compile kernel and trying it, I've quit and shut down the PC while Ubuntu was running from LiveCD. I'm tired and don't have enough energy and time to instantly learn how to compile kernel, so here's the driver that might work - all you have to do it compile it as kernel module ;)
synaptics_i2c_rmi4.c
Can some one please test this? Or post how to do it and i will try to do it too.
 
Last edited:

nobodyAtall

Recognized Developer
Jan 16, 2008
1,549
19,545
Here's the compiled module based on blagus code changes.

I hope it works for you guys, for the mini it doesn't :S

Just insmod it at boot (i.e. before the ui starts).


After a hour or two spent in setting up Ubuntu properly to compile kernel and trying it, I've quit and shut down the PC while Ubuntu was running from LiveCD. I'm tired and don't have enough energy and time to instantly learn how to compile kernel, so here's the driver that might work - all you have to do it compile it as kernel module ;)
synaptics_i2c_rmi4.c
 

Attachments

  • synaptics_i2c_rmi4.ko.zip
    46.3 KB · Views: 95
  • Like
Reactions: ponanovn

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    In my case I tried the stock SE driver. A manual insmod in command line success, but the touchscreen doesn't work, because Android tried to communicate with your previous (removed) driver.

    You need to load your driver at boot. I modified init.delta.rc to make it loaded at boot:

    Code:
    # Use interrupt to detect sd card insertion and removal
        write /sys/bus/platform/drivers/msm_sdcc/msm_sdcc.1/polling 0   
    
    # dx: our modded touchscreen driver
        insmod /system/lib/modules/synaptics_i2c_rmi4.ko
    
    # insert SDIO-driver used by wifi. This is _not_ the default SDIO driver
    # included in the kernel.
        insmod /system/lib/modules/sdio.ko
    
    # insert kernel modules for froyo's app2sd
        insmod /system/lib/modules/dm-mod.ko
        insmod /system/lib/modules/dm-crypt.ko
        insmod /system/lib/modules/twofish_common.ko
        insmod /system/lib/modules/twofish.ko

    My touchscreen driver (after our driver loaded) is located as input3, but it's still work.

    You can have a list of input devices with this command:
    Code:
    cat /proc/bus/input/devices

    Trying the way to "fake" mt ~.~

    Update 22:03 22/03: I can now "fake" dual-touch by sending touchscreen events from the driver. This screenshot below is taken with MiniCM Beta 2. :D

    x8-dt.png
    3
    Sweet story

    I feel sorry for people, whose got synaptics.

    Wait, wait, wait!
    I'll explain it why:
    Some days ago, I made an argument with a hungarian folk, and he pointed to the problem:
    People who bought X8s are misleaded by SonyEricsson. It's okay that SE made this phone with SingleTouch. Everybody who bought the phone are aware of that. It is still ok. But here comes the twist in the story.

    We all know now that there are other mobiles that has the same Digitizer chip as the (synaptics) X8, but there is a big difference. "Other" companies made a driver for that chip that can do Pinch zoom. More than nothing, to be honest it's really a good thing. What SE did? They stated that X8 is not capable of it. Other phones gets their Android updates "regulary". What SE did? They said X8 is not capable to run newer Androids smoothly because of hardware limitations.

    What happend after this?

    Great devs of XDA (it will be long to list all of them) made a 2.2 Android system that is way faster than the Official 2.1. SE haven't answered to this. They've dug the facts under the ground...deeply...

    After a while doixanh made the magical Synaptics Digitizer Module that made the phone capable of Pinch zooming and else. Many people suddenly started to like their X8, but for some people it hasn't worked. The hunting for clues started. On a beautiful day, one XDA forumer made some photos from his/ her X8's inboard. The world of SonyEricsson changed a lot at a blink. People realized that the "newer(?)" X8s has got different hardware inside them (there wasn't any post about that SE is not only changed the digitizer, but changed the whole screen too), and the war has got to new flames.
    People started to be curious about this strange happening. Thousands of E-mails has been sent to SE's mailbox, many of them are quite harsh. SE never answered for them. Why? Maybe we would never know the truth.
    Weeks/ months passed by, the water has calmed down. People started to lose their fate in SE, as of the developing to cypress never started.

    "But hey! What the f*ck is this?!"
    This was in my mind when I first saw the thread that made by AnDyX. Can it be true? SE really made this huge ass of themself? No way. Ooohhhh, Yes way. The cypress dualtouch module came out. Now the folks who has got this type of X8 got really happy, and spammed all the threads with this. It even came out from the faucet (this is a hungarian phrase). Now some PPL who has synaptics (With fake DualTouch, that even works really good!) aren't happy, and done with SonyEricsson forever.

    Let me quote myself:
    It's okay that SE made this phone with SingleTouch. Everybody who bought the phone are aware of that.

    -Now read my last indention.
    -Now read the quote.
    -Repeat this until you don't laugh at yourself.


    Hope I haven't insulted anyone with this little writing.

    For a time, Asycid OFF.
    Thank you.

    P.S.: As you noticed, there werent any twist in the story :)
    3
    Dx I don't always get output but I know for sure I have cy8ctma340 I checkd the actual hardware, could it be the different terminal emulators people are using :s and may be that's why no output

    Sent from my X8 using Tapatalk

    Some people don't get output, because the command writes out a log file's containment ("grep"= general report [If I'm not wrong]). The log file has got a maximum size, and if it reach this... well... it deletes older entrys. The word in the quotemarks after grep is the word what you searching in the log file, but the system erases the boot log (that contains the "driver loaded" things) after a while. That's why you have to call this command as soon as possible after you turn on your phone. Got it? :)
    3
    first steps:
    I made our driver for the module with this piece of code
    replace this function
    in file synaptics_i2c_rmi4.c
    static int __devinit synaptics_ts_init(void)
    Code:
    static int __devinit synaptics_ts_init(void)
    {
    	struct i2c_driver * otherDriver;
    	struct device_driver * other;
    	
    	other = driver_find(SYNAPTICS_I2C_RMI_NAME, &i2c_bus_type);
    	
    	if (other)
    	{
    //		printk(KERN_ERR "Previous driver found: %s\n", other->name);
    		put_driver(other);
    		otherDriver = to_i2c_driver(other);
    		printk(KERN_ERR "Previous driver found: %s, addr 0x%x, owner %x\n", other->name, (int)otherDriver, (int)other->owner);
    		//driver_unregister(other);
    		i2c_del_driver(otherDriver);
    		printk(KERN_ERR "Prev driver removed\n");
    	}
    
    	synaptics_wq = create_singlethread_workqueue("synaptics_wq_mod");
    	if (!synaptics_wq)
    		return -ENOMEM;
    	return i2c_add_driver(&synaptics_ts_driver);
    	//return i2c_register_driver(NULL, &synaptics_ts_driver);
    	
    }
    it works.
    unloads the old driver and load the new module
    text from dmesg
    Code:
    Previous driver found:synaptics-rmi-ts
    Prev driver removed
    and so on
    You can do it myself
    copy this file(synaptics_i2c_rmi4.ko to the phone /system/lib/modules
    don't make this(nexts steps) with adb shell
    do it with the console(terminal) on our phone
    I used Android Terminal
    su
    then
    insmod /system/lib/modules/synaptics_i2c_rmi4.ko
    then
    dmesg
    Code:
    Previous driver found:synaptics-rmi-ts
    Prev driver removed
    and so on
    almost at the end of messages while you see that the module works
    Follow these steps to work
    1.enable debug
    2.make the driver with multitouch(dualtouch)

    I used google translate.
    3
    Actually I don't have DT/MT now, it's a "fake" "pinch zoom". What I did is simply modify the stock SE driver, so that, when the driver receives an irq request (the screen is touched) :

    - send the touch event to linux's input subsystem
    - if the z (pressure) and w (width) param is large enough (my test : w >= 10 and z > 35), start the "fake dt" mode, save current position. These conditions are normally satisfied when you press two fingers near each other.
    - in every next request, calculate the "fake second finger" by comparing current position and the saved position (start "fake dt"), send the "fake finger" event to the linux's input subsystem.

    Right now, what I really do to make "pinch zoom" :
    - Put two finger near each other to satisfy the conditions w and z
    - Lift up one finger :D and use the other to do the pinch zoom

    A short clip...
    http://www.youtube.com/watch?v=t8ktSg0Jj_c

    This also works in Maps...
    I will try to find better parameters and will post the module source tomorrow.