Arduino Forum

Topics => Device Hacking => Topic started by: deejayspinz on May 19, 2011, 11:41 am

Title: Blackberry Joystick / Navigation Key Hack
Post by: deejayspinz on May 19, 2011, 11:41 am
Looking to use a Blackberry Navigation Key / Joystick (from the 9800)  as a mouse input device tied to USB.  Anyone figured out the pinouts and/or signal protocols of this thing?   reference:  http://www.dealextreme.com/p/genuine-replacement-joystick-navigation-key-for-blackberry-9800-81000 (http://www.dealextreme.com/p/genuine-replacement-joystick-navigation-key-for-blackberry-9800-81000)

Pic:
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: deejayspinz on May 20, 2011, 11:39 am
Anyone?
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: deejayspinz on May 24, 2011, 08:24 pm
Bump - hoping someone may have some info on this?   Looking for any thoughts on pinouts, supported protocols etc.  When I get my order, I plan on tracing the connections and trying to power it then putting a scope on the other pins to see what sort of output signals are generated.  It would be great if this unit output similar signals that a scroll wheel or Apple MightlyMouse trackball put out (since I have one these to hack apart).
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: cubiclegnome on May 25, 2011, 08:03 pm
I imagine this would be considerably more difficult to use than a blackberry trackball, and possibly outside of the capabilities of the arduino, as this is basically a low-res camera.  The process of reading in data from the cam, comparing the images, and determining motion likely happens on a chip on the blackberry motherboard, and not inside this sensor (camera) .
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: deejayspinz on May 26, 2011, 03:35 am
Admittedly, I agree.  However, I'm stubborn, so I'm not giving up yet!  I pulled off something similar a while back on my EEE 901 using an Apple MightyMouse (http://www.plastibots.com/?p=37) - which is my backup plan for this project (already on order).   I have 2 of the BB trackpads on order and will attempt to see what makes them tic.  I think you are right though, I suspect the unit consists of an IR LED, some IR receivers and just transmits data to the BB mainboard for processing.  My hope is that the data that is being generated may be able to be interpreted somehow - possibly by the Arduino.  In my case I only care about scrolling up and down.
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: focalist on Jun 04, 2011, 02:50 am
There's been a hack of the sensors from optical mice used with Arduino, which are essentially the same thing, upside down (I would think).  Do a search in the forums for it, it's even been used via Processing as a really rough scanner.

I can't imagine the thing is anything more complex than a variation on the optical mouse theme...but I could be wrong and frequently am..
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: ars on Jan 17, 2014, 01:49 am
The trackpad does all the processing onboard as per the research I did. And hence it can definitely be integrated with arduino as it outputs x,y. The statement made by one of the earlier members that it requires image processing to be done by the host controller is a misconception. Will keep you updated about this.
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: duende_azul on Mar 09, 2014, 05:14 pm
Blackberry 8520 trackpad works much like the Agilent ADNS-3060 sensor, so in fact, using the data sheet that sensor could read offset information (delta_x and delta_y).


Sorry for my bad english.
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: vahakn on May 12, 2014, 04:38 pm
Did anyone get any further with this?

Id love to get it working for a tongue control for a paraplegic.

V
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: duende_azul on May 18, 2014, 06:53 pm
https://www.youtube.com/watch?v=vVQ3yUn4kMI
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: vahakn on Jun 04, 2014, 01:27 pm
Thats a cool video but literally has no how to or information at all.
ive emailed the guy, lets hope hes a friendly type.
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: duende_azul on Jun 04, 2014, 10:51 pm
Hi..
Gladly share the information .. but I am from pic, not Arduino ... so you do the translation to arduino.
Greetings ...
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: duende_azul on Jun 06, 2014, 01:46 am
The information is referred to the trackpad of blackberry 8520.
First of all, the pinout of the trackpad is this:


(The white triangle indicates the pin 1)

Pinout:

Note1: signals "sig0, sig1, sig2 and sig3" should be ignored because it is not used in this trackpad)
Note2: The signals with "*", they are connected through a 220K resistor to 2.85V and GND.
Note3: The MOTION signal functions as an interrupt signal is set to 0 when there is data to read and set to 1 when already read all the data. Data are reading MOTION, delta_x and delta_y records.

Schematic:


Communication:
Communication with the trackpad is made using the 4-wire SPI protocol.
The SHTDWN and RESET signals must be at logic 0.

According to my research, the records you need to read are:
Product ID (0x00) - Always returns the value 0x0D. Useful in our application to see if the device is present.

Motion (0x02) - Indicates whether there was a tap on the trackpad. Bit 7 of this register should be inspected, if it is 1 no data to read, if it is 0, no data.

Delta_x (0x03) - Indicates the offset in the x axis.
Delta_y (0x04) - Indicates the offset in the y axis.

Delta_y delta_x and 8-bit registers are signed.

There are many more records .. and as I have observed, are similar to the motion sensor Agilent ADNS-3060. Read the datasheet for more information.

To read the records of the trackpad, we first indicate the direction of the record we want to read and then perform the reading, for example, to read the PRODUCT ID, we should do something like:

Code: [Select]
spi_write (0x00); / / address PRODUCT ID
data = spi_read(); / / Reads the value of PRODUCT ID


Delta_x and delta_y to read:
Code: [Select]

spi_write (0x02); / / address delta_x
del_x  = spi_read(); / / Value delta_x
spi_write (0x03); / / address delta_y
del_y = spi_read(); / / Value delta_y


I hope you find it useful.
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: comjosh64 on Feb 13, 2015, 04:50 am
@duende_azul In case no one else has thanked you for this information yet, THANK YOU!
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: Ryotsuke on Dec 20, 2015, 02:06 pm
Anybody has images with pins and schematics saved elsewhere?
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: interestingfellow on Feb 10, 2017, 03:03 am
I have fantasized about a very small low power bluetooth mouse wedding band style ring with one of these sensors as the trackpad.

Someone, please tell me there is an idiot's guide on how to make this thing work?

Obviously, I just have to buckle down, try to build it, and learn along the way.

But if someone else knows of a previously built project that will help me learn, that would be great!

Thank you all, for everything here!
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: edfrench on May 01, 2017, 11:10 am
Many thanks duende_azul for posting this stuff. Looks great.
Those connectors are really tiny to use by hand- any tips?
Thanks
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: nikitoz236 on Aug 03, 2017, 04:09 pm
Ok. I have pinout for 9800 trackpad. It have i2c interface. Who now how to read data? i will trying.

Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: ovsokolov on Sep 10, 2017, 09:58 pm
Is it legal ti use the this trackpad in own projects/devices
Title: Re: Blackberry Joystick / Navigation Key Hack
Post by: edfrench on Sep 11, 2017, 11:57 am
@ovsokolov

This is not legal advice, I'm not qualified and the exact circumstances are going to depend where you are.

However, I think I'd be happy personally to make something with this (if I felt I could make those tiny connections!). After all, even IF you didn't have an implicit licence in the purchased part to use its IP, the "damages" done to whoever owns that IP from your use in a homebrew project would be minimal. They'd have to show that somehow they lost revenue because you made this yourself!