Go Down

Topic: Synaptics T1004 trackpad issues (Read 1 time) previous topic - next topic


Apr 16, 2013, 12:45 am Last Edit: Apr 16, 2013, 01:35 pm by neema_t Reason: 1

So I have a trackpad I'm trying to interface with my Arduino. It has a Synaptics T1004 IC and I've seen people getting these working elsewhere on the internet, so I figured this would be quite straightforward, clearly I was wrong! I'm not sure what the problem is; I've cut a chunk of the donor laptop's motherboard off to get the trackpad connector solderable, soldered it all up, checked for continuity where there shouldn't be and there is none. So far, there's nothing to suggest it shouldn't work.

I've wired it all up to my Uno (also tried on a Leonardo), loaded up the PS/2 library's Mouse example and I get nothing on the serial monitor. I've tested it with other sketches and they work fine, just this gives absolutely no response.

Looking at the trackpad, the only thing that strikes me as odd is the SOT23-3 IC that's soldered about halfway along the trackpad's FPCB connector. It has the code '12E' printed on it so I looked it up and it's supposed to be a ZC2812E, "dual series RF schottky15V 20mA", but that doesn't tally with what my multimeter is telling me, which is that it has a common anode connected to the trackpad's GND line and there are two cathodes which go up to the motherboard connector and stop there. One cathode reads 600mV and the other 550mV. Quite why the anode is on the GND line I have no idea.

A rough drawing:

I'm totally stumped. I've tried swapping the CLK and DATA over when connected to the Uno but I still get no signal... Maybe it's dead? The test points on the trackpad seem to be ok, though, they sit at about 4.4V and when you touch the trackpad and move your finger that goes up to 4.55V until you take your finger off. Obviously I have no idea whether it's supposed to do that or not, but it's better than not responding at all. Maybe. I don't know. I'm just grasping at straws because I'd really like to be able to use this trackpad.

Oh actually it may be worth noting that I had to use uber-thin headphone wire to solder this thing up, but it's only a short piece (about 5-10cm). Maybe it's too resistive to give a good signal? I'll check it with my meter and report back ASAP. --- Edit: Checked both CLK and DATA, roughly one whole ohm. Probably not the issue.

Any ideas please?


dual series RF schottky15V 20mA",

Quite why the anode is on the GND line I have no idea.

The SOT chip's function is just for ESD input protection.


Ah, thanks. So that means I might have a dead controller chip, I guess? Sigh...


Those uber thin headphones wire have insulating coating around the wire. Did you remove/burned/scraped them off?


I had to burn them off to solder them, I've tested the continuity and it seems fine. I've also checked there are no shorts either but I'll double check it tomorrow, I can't be sure I haven't made some ridiculously obvious mistake due to tiredness.


Apr 16, 2013, 01:35 pm Last Edit: Apr 16, 2013, 01:37 pm by neema_t Reason: 1
So I've checked and double checked, there are no short circuits between the 5V, GND, DATA and CLK lines, everything connects up as this highly official pinout suggests:

I'm running this sketch:

Code: [Select]

#include <ps2.h>

* an arduino sketch to interface with a ps/2 mouse.
* Also uses serial protocol to talk back to the host
* and report what it finds.

* Pin 2 is the mouse data pin, pin 3 is the clock pin
* Feel free to use whatever pins are convenient.

PS2Mouse mouse(3, 2);

void setup()

* get a reading from the mouse and report it back to the
* host via the serial line.
void loop()
  MouseInfo mouseInfo;
  Serial.print(mouseInfo.status, DEC);
  //X change
  Serial.print(mouseInfo.x, DEC);
  //Y change
  Serial.print(mouseInfo.y, DEC);
  //Scroll change
  Serial.print(mouseInfo.scroll, DEC);
  //Left button down
  Serial.print(mouseInfo.leftClick, DEC);
  //Middle button down
  Serial.print(mouseInfo.middleClick, DEC);
  //Right button down
  Serial.print(mouseInfo.rightClick, DEC);
  //Cumulative X position
  Serial.print(mouseInfo.cX, DEC);
  //Cumulatie Y position
  Serial.print(mouseInfo.cY, DEC);
  //Cumulative scroll postion
  Serial.print(mouseInfo.cScroll, DEC);

Although I realise posting it is kind of useless as most of the work is done by the library itself, but still; it's the exact code from the example.

So I'm at a loss, I'm guessing the trackpad is dead. Any ideas anyone? I don't have an oscilloscope to test the DATA line with, unfortunately, so is there another way I could check and see if anything is going on, maybe?


I have a similar synaptics trackpad with the same pinout. It worked flawlessly with the ps2 library when I last tried it.


Apr 25, 2013, 09:27 pm Last Edit: Apr 25, 2013, 09:36 pm by neema_t Reason: 1

I have a similar synaptics trackpad with the same pinout. It worked flawlessly with the ps2 library when I last tried it.

Huh. Can you tell me which version of the IDE that was compiled with?

Well I've tried two Synaptics T1004s and one T10048 and none of them have worked, yet the PS/2 mouse I found works fine (with the Arduino sketch). I'm stumped, surely three trackpads - two of which I know for sure used to work and one that was sold to me as fully working - can't all be broken?

I wonder if it's an incompatibility issue because the PS/2 library that exists was written for pre-1.0 versions of the IDE. I'm going to see if my college will let me use an oscilloscope during tomorrow lunch so I can compare whatever the mouse is doing to whatever the trackpad is doing, and if it's doing something, anything, I think I'll pick up a PS/2 - USB active converter and see if that works.

Edit: I found this http://www.synaptics.com/sites/default/files/ACF126.pdf?q=decaf/utilities/ACF126.pdf, it seems pretty comprehensive. It mentions that you need two 10k pull-ups on the clock and data but I've tried them already and they didn't work. Also I haven't seen anyone else mention that they were necessary, most sources say the trackpad was soldered up and it worked right away (with active PS/2 - USB converters and this Arduino library example). I don't know if I mentioned it or not but the trackpad isn't absolutely vital to my project, but as it's near impossible to remove it from my laptop's case (as it's sandwiched between a thick plate and the hyper-thin titanium outer case which is glued in place with something resembling the strongest glue in the known universe) it'll bug me to see the trackpad there but not be able to use it... Even though I almost always forego the trackpad in favour of a mouse. Sigh. It should be so simple, but for some reason isn't.


It was quite a while ago so I don't remember the details, but it was an IDE version between 0018 and 0022 I think.


Thanks, I still have 0022 so I think I'll re-download the library and see if I can get it working in that. I had to change something to make it work with 1.0.4 so I'm wondering if something went wrong, but that wouldn't explain why the mouse works but trackpad doesn't.

Go Up