Author Topic: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)  (Read 11221 times)

0 Members and 1 Guest are viewing this topic.

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
[Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« on: Mon, 09 February 2015, 15:10:37 »
Good evening GeekHack,

this is my first post here, even though I've been a long time lurker. A few month ago, I bough a vintage PS/2 Trackball from the CH Products brand. I must say that I'm very impressed by the quality of this device. It well derserves its title of "Model M of the trackballs".





The trackball was advertised as being the PS/2 variant, but unfortunatly it is not. In fact, it uses a pretty old connector and protocol called : BUS mouse.

The bus mouse connector is very similar to the PS/2, with the same 5/16" diameter, but it as 9 pins instead of 6. I can't blame the seller, as PS/2 and BUS can easily been mixed up.



Unlike PS/2, serial or USB devices, absolutly NO LOGIC is done on the device side. BUS mouse devices send the raw data from the optomechanical encoders and buttons to a decoding card on the computer side. The connector has the following pins:

  • XA (X axis encoder channel A)
  • XB (X axis encoder channel B)
  • YA (Y axis encoder channel A)
  • YB (Y axis encoder channel B)
  • Switch 1
  • Switch 2
  • Switch 3
  • +5V
  • Ground
You've probably spotted that, despite having 4 buttons, the connector only carries 3 switches informations. In fact, the top buttons acts as middle-click (both of them) or as click-lock (left lock and right lock). Everything is configurable thanks to 8 DIP switches below the device.

Fortunatly, all is not so bad:

  • The cable is connected to a header so that changing it will be easier.
  • The pinout is provided on both manual and PCB
  • The controller is an 8bit PIC16C55 with a DIP28 package.


How do the encoders work:

They are based on quadrature encoders and consists on a shaft wheel and 2 optical sensors per axis. When the shaft spins, it generates 2 electrical signals phased out by 90 degrees


(image courtesy of Dynapar)

The picture below, shows that there're 3 achievable count speed:
  • x1 if you count on channel A rising edge only
  • x2 if you count on channel A rising edge and falling edge
  • x4 if you count on both channel A and B rising and falling edges

(image courtesy of Dynapar)



Retro-mod operation:

After several tests using an Arduino Mega 2560 rev2 board, I bought a Teensy++ 2.0 as it supports the HID protocol.
At the moment, it is connected it to the BUS Mouse cable header.





The quadrature encoders are handled by interrupt, on both FALLING and RISING transitions. Buttons states are handled by the background loop and updated every 10 microseconds, along with relative coordinates updates if anything happend on the encoders side.

The video below shows a quick demonstration of the trackball in use.


(the embedded video doesn't seem to work:
)

What's left to do:

Next step will be to either put the Teensy inside the trackball case or use it as as inline adapter. The later option would require a 3D printed case.

Another cool option, that would match the retro-tech theme of this project, would be a controller board. Bus mouse pointing devices were used with specific controller board (like the one pictured below), where all the logic were done.



The basic idea would be to connect the Teensy to an internal USB header of the motherboard and run the required pins the a connector attached to a PCI bracket. A PCB, with the Teensy socketed into it, could be used for a genuine retro look :D.

Kind of link the pictured Microsoft InPort card, but with the Teensy in place of the PIC and a blank / dummy PCIe connector to secure the board in place.
« Last Edit: Sat, 16 May 2015, 02:51:15 by GuilleAcoustic »

Online Tactile

  • Posts: 1052
  • Location: Portland, OR
Re: [Modding] CH Products Trackball PRO (BUS mouse to USB HID conversion)
« Reply #1 on: Mon, 09 February 2015, 16:12:01 »
Nice work, and very interesting. After reading this I must say that I'm glad mine is a PS/2 type, so I can just plug it in.  ;)

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Re: [Modding] CH Products Trackball PRO (BUS mouse to USB HID conversion)
« Reply #2 on: Tue, 10 February 2015, 04:52:07 »
Nice work, and very interesting. After reading this I must say that I'm glad mine is a PS/2 type, so I can just plug it in.  ;)

Thanks a lot; this is very much appreciated. At first I was a bit angry that it's been advertised as PS/2 while not being, but in the end that just gave me a excuse to hack it and play with a Teensy. It's been a very interesting and enjoyable project. I'm even considering scratch building a trackball with high CPR encoder now  ;D

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Completed:

I recently purchased an Arduino PRO micro, as the Teensy2.0++ doesn't fit the trackball case. This was probably a lucky day, but the store also had the exact same 10 pins cable harness than the one originally used by CH Prodcuts.

As you can see, the PRO micro (in red) is almost half the size of the Teensy2.0++ (in green).



CH Products used some plastic "jumpers" to tie the wires.



The new wires are thicked than the original ones and I can't use them. What could I use then ...



... assume that the cable is a button and the PCB is some piece of fabric ...





I finally took the time to solder the Arduino PRO Micro to the new cable harness.





I made a temporary cable from a micro USB cable. I just got the casing off of the micro USB connector.



I'll do some proper sleeving during the weekend and a strain releaser from epoxy in other to have a clean finish. At least, no more code nor soldering and the controller is now inside the case.

Thanks a lot for everyone who followed this and for the support I got from all of you.

The code is much more compact and optimzed:

Code: [Select]
/* =================================================================================
   Author  : GuilleAcoustic
   Date    : 2015-05-16
   Revision: V1.0
   Purpose : Opto-mechanical trackball firmware
   ---------------------------------------------------------------------------------
   Wiring informations: Sparkfun Pro micro (Atmega32u4)
   ---------------------------------------------------------------------------------
     - Red             : Gnd                         |  Pin: Gnd
     - Orange          : Vcc (+5V)                   |  Pin: Vcc
     - Yellow          : X axis encoder / channel A  |  Pin: INT0 - SCL
     - Green           : X axis encoder / channel B  |  Pin: INT1 - SDA
     - Blue            : Y axis encoder / channel A  |  Pin: INT2 - Rx
     - Violet          : Y axis encoder / channel B  |  Pin: INT3 - Tx
     - Grey            : Switch 1                    |  Pin: PB3  - MISO
     - White           : Switch 2                    |  Pin: PB2  - MOSI
     - Black           : Switch 3                    |  Pin: PB1  - SCK
   ================================================================================= */

// =================================================================================
// Type definition
// =================================================================================
typedef struct
{
  int8_t  coordinate = 0;
  uint8_t index      = 0;
} ENCODER_;

// =================================================================================
// Constant for binary mask
// =================================================================================
#define  _SWITCH_1    B1000
#define  _SWITCH_2    B0100
#define  _SWITCH_3    B0010

// =================================================================================
// Constants
// =================================================================================
const int8_t lookupTable[] = {0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1, 1, 0};

// =================================================================================
// Volatile variables
// =================================================================================
volatile ENCODER_ xAxis;
volatile ENCODER_ yAxis;

// =================================================================================
// the setup function runs once when you press reset or power the board
// =================================================================================
void setup()
{
  // Attach interruption to encoders channels
  attachInterrupt(0, ISR_HANDLER_X, CHANGE);
  attachInterrupt(1, ISR_HANDLER_X, CHANGE);
  attachInterrupt(2, ISR_HANDLER_Y, CHANGE);
  attachInterrupt(3, ISR_HANDLER_Y, CHANGE);
 
  // Start the mouse function
  Mouse.begin();
}

// =================================================================================
// The loop function runs over and over again forever
// =================================================================================
void loop()
{
  // Update mouse coordinates
  if (xAxis.coordinate != 0 || yAxis.coordinate != 0)
  {
    Mouse.move(xAxis.coordinate, yAxis.coordinate);
    xAxis.coordinate = 0;
    yAxis.coordinate = 0;
  }

  // Update buttons state
  !(PINB & _SWITCH_1) ? Mouse.press(MOUSE_LEFT)   : Mouse.release(MOUSE_LEFT);
  !(PINB & _SWITCH_2) ? Mouse.press(MOUSE_RIGHT)  : Mouse.release(MOUSE_RIGHT);
  !(PINB & _SWITCH_3) ? Mouse.press(MOUSE_MIDDLE) : Mouse.release(MOUSE_MIDDLE);

  // Wait a little before next update
  delay(10);
}

// =================================================================================
// Interrupt handlers
// =================================================================================
void ISR_HANDLER_X()
{
  // Build the LUT index from previous and new data
  xAxis.index = ((xAxis.index << 2) | ((PIND & 0b0011) >> 0)) & 0b1111;

  // Compute the new coordinates 
  xAxis.coordinate += lookupTable[xAxis.index];
}

void ISR_HANDLER_Y()
{
  // Build the LUT index from previous and new data
  yAxis.index = ((yAxis.index << 2) | ((PIND & 0b1100) >> 2)) & 0b1111;

  // Compute the new coordinates 
  yAxis.coordinate += lookupTable[yAxis.index];
}
« Last Edit: Sat, 16 May 2015, 02:47:36 by GuilleAcoustic »

Offline meow a cat

  • Posts: 531
  • Location: British Columbia, Canada
  • Resistance is futile.
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #4 on: Sat, 16 May 2015, 03:49:33 »
Nice project! I'm jealous, I love CH gear. I use their stuff exclusively for flight simming. Really well made stuff!

I'd love to own a CH trackball, but they're hard to find, and when they do come up they're expensive. The programming software is amazing though!

Boards:
Silver 84-key KMAC LE, 62g lubed & stickered ergo-clears, GON NerD PCB, polycarbonate plate,MX lock/Phosphorglow IBM Model M SSK 1391472/White HHKB Pro 2, Hasu controller/WKL Phantom, 50g vintage blacks, MX lock
Leeku G80-1800 (build in progress)

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #5 on: Thu, 21 May 2015, 02:11:21 »
Nice project! I'm jealous, I love CH gear. I use their stuff exclusively for flight simming. Really well made stuff!

I'd love to own a CH trackball, but they're hard to find, and when they do come up they're expensive. The programming software is amazing though!

Thanks a lot. This trackball didn't cost me too much, $60 delivered from the US to France, which is great considering it was in Mint condition. The DT225 is more expensive and doesn't pop-up that often.

It's a real pleasure to use this trackball. It certainly doesn't have an high Dpi sensor, but it works well even with two 1280x1024 screens.

Offline meow a cat

  • Posts: 531
  • Location: British Columbia, Canada
  • Resistance is futile.
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #6 on: Thu, 21 May 2015, 15:55:41 »
Nice project! I'm jealous, I love CH gear. I use their stuff exclusively for flight simming. Really well made stuff!

I'd love to own a CH trackball, but they're hard to find, and when they do come up they're expensive. The programming software is amazing though!

Thanks a lot. This trackball didn't cost me too much, $60 delivered from the US to France, which is great considering it was in Mint condition. The DT225 is more expensive and doesn't pop-up that often.

It's a real pleasure to use this trackball. It certainly doesn't have an high Dpi sensor, but it works well even with two 1280x1024 screens.

Ah, I didn't look carefully enough; I thought this was the DT225. That's the one I have my eyes on. You did get a good price, especially with the international shipping! Great project.

Their stuff really does last forever, I have a Flightstick Pro and a yoke from sometime in the 90s. They still work fine (almost as good as new!), once I used a gameport to USB adapter. I also have some of their new stuff (Fighterstick, Pro Pedals, Pro Throttle) and it still has the same great quality. It's a shame all of their stuff is tough to get outside of the US. I live in Canada, and still had a tough time finding their gear.

Boards:
Silver 84-key KMAC LE, 62g lubed & stickered ergo-clears, GON NerD PCB, polycarbonate plate,MX lock/Phosphorglow IBM Model M SSK 1391472/White HHKB Pro 2, Hasu controller/WKL Phantom, 50g vintage blacks, MX lock
Leeku G80-1800 (build in progress)

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #7 on: Thu, 21 May 2015, 18:47:01 »
From what I understand, the DT225 and the Trackball Pro are the same. CH Products rebadged the Pro into DT225 for the OEM when they discontinued the trackball activity for the end users.

One thing for sure, this trackball could sustain a nuclear war lol.

Offline VoteForDavid

  • Posts: 204
  • Location: Texas
    • Vote For David
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #8 on: Thu, 21 May 2015, 22:07:43 »


Congratulations.  This is quite a feat.
Jesus loves you.

Offline CPTBadAss

  • Woke up like this
  • Posts: 14329
  • Location: CT, USA
  • Rich Homie Huang.
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #9 on: Thu, 21 May 2015, 22:10:19 »
Damn....DAMN. This is really really cool. Thank you so much for sharing this with us. I always wondered if you could convert old trackballs to USB :D.
Please check out TactileZine.com!

Offline Yoe

  • Posts: 273
  • Location: Skellefteċ, Sweden
  • Alps & ISO <3
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #10 on: Sun, 09 August 2015, 02:05:32 »
Ok, so I modified this excellent converter to work with the Apple M0100 mouse. I know there are lots of people using M0110s on USB, both wih converters and with new matrices, so if you want to have the original mouse working at its side, just do this.

The only change in the code is to remove or comment out the rows containing the switches that aren't used.

If they are not removed from the code, the converter will act up and send mouse button presses unless those pins are pulled up with a resistor to VCC. I'll look into just pulling them up with the internal pull-up resistors (if I manage to figure out how to do that.. not a programmer).

Then the wires between the DB9 and the Pro Micro go like this..

Code: [Select]
DB9     Pro Micro
1       GND
2       VCC
3       GND
4       D0
5       D1
6       (not connected)
7       B3
8       D3
9       D2

Also solder a pull up resistor (I used a 15k) between VCC and B3 (mouse switch).

Thanks for all the help, GuilleAcoustic! :)

Edit: Error in how I had changed the code. Corrected.
« Last Edit: Mon, 10 August 2015, 07:10:38 by Yoe »

Offline Bucake

  • Posts: 943
  • Location: The Netherlands
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #11 on: Sun, 09 August 2015, 06:06:54 »
really really sweet stuff there
IBM Model F XT // Realforce 87U 55g Type-S // HHKBP2 45g Type-S // KBT Pure Pro Cherry MX Red

Online Tactile

  • Posts: 1052
  • Location: Portland, OR
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #12 on: Sun, 09 August 2015, 11:18:42 »
Yoe: I think your mod is interesting enough to start a new thread with a description in the title. I think some folks might not find it here.

Nice work, btw

Offline Yoe

  • Posts: 273
  • Location: Skellefteċ, Sweden
  • Alps & ISO <3
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #13 on: Mon, 10 August 2015, 05:26:40 »
Thanks! That's a good idea. I think I'll do that. But I think I should make a bit better first, maybe using the internal pull-ups instead of soldering in an external resistor.

Offline Yoe

  • Posts: 273
  • Location: Skellefteċ, Sweden
  • Alps & ISO <3
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #14 on: Mon, 10 August 2015, 08:10:46 »
Ok, that wasn't too hard I guess…

Created new thread on the M0100 converter here:

https://geekhack.org/index.php?topic=74340.0

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #15 on: Tue, 11 August 2015, 15:05:49 »
Woot Woot, I'm so glad that my code helped someone. Another piece of history got a second, well deserved, life  :p

Offline GuilleAcoustic

  • Thread Starter
  • Posts: 77
  • Location: France
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #16 on: Sat, 30 January 2016, 15:51:46 »
Last modification:

  • Added software switch debouncing
  • Code cleanup

Code: [Select]
#include <Mouse.h>

/* ================================================================================
   Author  : GuilleAcoustic
   Date    : 2015-05-22
   Revision: V1.1
   Purpose : Opto-mechanical trackball firmware
   --------------------------------------------------------------------------------
   Wiring informations: Sparkfun Pro micro (Atmega32u4)
   --------------------------------------------------------------------------------
     - Red    : Gnd                          |   Pin: Gnd
     - Orange : Vcc (+5V)                    |   Pin: Vcc
     - Yellow : X axis encoder / channel A   |   Pin: PD3 - (INT0)
     - Green  : X axis encoder / channel B   |   Pin: PD2 - (INT1)
     - Blue   : Y axis encoder / channel A   |   Pin: PD0 - (INT2)
     - Violet : Y axis encoder / channel B   |   Pin: PD1 - (INT3)
     - Grey   : Switch 1                     |   Pin: PB3
     - White  : Switch 2                     |   Pin: PB2
     - Black  : Switch 3                     |   Pin: PB1
   --------------------------------------------------------------------------------
   Latest additions:
     - 2016-01-28: Software switch debouncing
   ================================================================================ */

// =================================================================================
// Type definition
// =================================================================================

#ifndef DEBOUNCE_THREASHOLD
#define DEBOUNCE_THREASHOLD 50
#endif

// =================================================================================
// Type definition
// =================================================================================
typedef struct ENCODER_
{
  int8_t  coordinate;
  uint8_t index;
} ENCODER_;

typedef struct BUTTON_
{
  boolean state;
  boolean needUpdate;
  char    button;
  byte    bitmask;
  long    lastDebounceTime;
} BUTTON_;

// =================================================================================
// Constant definition
// =================================================================================
const int8_t lookupTable[] = {0, 1, -1, 0, -1, 0, 0, 1, 1, 0, 0, -1, 0, -1,  1,  0};

// =================================================================================
// Volatile variables
// =================================================================================
volatile ENCODER_ xAxis = {0, 0};
volatile ENCODER_ yAxis = {0, 0};

// =================================================================================
// Global variables
// =================================================================================
BUTTON_ leftButton   = {false, false, MOUSE_LEFT,   0b1000, 0};
BUTTON_ middleButton = {false, false, MOUSE_MIDDLE, 0b0010, 0};
BUTTON_ rightButton  = {false, false, MOUSE_RIGHT,  0b0100, 0};

// =================================================================================
// Setup function
// =================================================================================
void setup()
{
  // Attach interruption to encoders channels
  attachInterrupt(0, ISR_HANDLER_X, CHANGE);
  attachInterrupt(1, ISR_HANDLER_X, CHANGE);
  attachInterrupt(2, ISR_HANDLER_Y, CHANGE);
  attachInterrupt(3, ISR_HANDLER_Y, CHANGE);
 
  // Start the mouse function
  Mouse.begin();
}

// =================================================================================
// Main program loop
// =================================================================================
void loop()
{
  // Update mouse coordinates
  if (xAxis.coordinate != 0 || yAxis.coordinate != 0)
  {
    Mouse.move(xAxis.coordinate, yAxis.coordinate);
    xAxis.coordinate = 0;
    yAxis.coordinate = 0;
  }

  // ---------------------------------
  // Left mouse button state update
  // ---------------------------------
  ReadButton(leftButton);
  UpdateButton(leftButton);

  // ---------------------------------
  // Right mouse button state update
  // --------------------------------- 
  ReadButton(rightButton);
  UpdateButton(rightButton);
 
  // ---------------------------------
  // Middle mouse button state update
  // ---------------------------------
  ReadButton(middleButton);
  UpdateButton(middleButton);

  // Wait a little before next update
  delay(10);
}

// =================================================================================
// Interrupt handlers
// =================================================================================
void ISR_HANDLER_X()
{
  // Build the LUT index from previous and new data
  xAxis.index       = (xAxis.index << 2) | ((PIND & 0b00000011) >> 0);
  xAxis.coordinate += lookupTable[xAxis.index & 0b00001111];
}

void ISR_HANDLER_Y()
{
  // Build the LUT index from previous and new data
  yAxis.index       = (yAxis.index << 2) | ((PIND & 0b00001100) >> 2);
  yAxis.coordinate += lookupTable[yAxis.index & 0b00001111];
}

// =================================================================================
// Functions
// =================================================================================
void ReadButton(BUTTON_& button)
{
  // Variables
  long    currentime;
  boolean switchState;
  boolean debounced;
 
  // Get current time
  currentime = millis();
  debounced  = (currentime - button.lastDebounceTime > DEBOUNCE_THREASHOLD);

  // Get current switch state
  switchState = !(PINB & button.bitmask);

  // Button state acquisition
  if ((switchState != button.state) && debounced)
  {
    button.lastDebounceTime = currentime;
    button.state            = switchState;
    button.needUpdate       = true;
  }
}

void UpdateButton(BUTTON_& button)
{
  if (button.needUpdate)
  {
    (button.state) ? Mouse.press(button.button) : Mouse.release(button.button);
    button.needUpdate = false;
  }
}

Offline ShivaYash

  • Posts: 157
  • Location: Berlin, DE
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #17 on: Fri, 16 March 2018, 10:41:40 »
Hello, I realise this is an old thread... but I too have this mouse, with the original PS/2 plug, so its easy for me to use as it is. However, of late, well since my cat vomitted on my desk, the clicks are showing up on my Mac as double clicks, and its pretty annoying. Could anyone provide advice on how to fix this issue? Contact cleaner or do I need to swap the mouse buttons, as they have worn out?

With thanks,
IBM Model M SSK, HHKB Pro 2 BT and Realforce 104U HiPro

Online Tactile

  • Posts: 1052
  • Location: Portland, OR
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #18 on: Fri, 16 March 2018, 10:50:28 »
Hello, I realise this is an old thread... but I too have this mouse, with the original PS/2 plug, so its easy for me to use as it is. However, of late, well since my cat vomitted on my desk, the clicks are showing up on my Mac as double clicks, and its pretty annoying. Could anyone provide advice on how to fix this issue? Contact cleaner or do I need to swap the mouse buttons, as they have worn out?

With thanks,

Spraying contact cleaner into the switches would be the first thing to try but, really, it's quite easy to replace the switches. You can learn a little about switches in this thread.

Offline ShivaYash

  • Posts: 157
  • Location: Berlin, DE
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #19 on: Fri, 16 March 2018, 10:51:10 »
Hello, I realise this is an old thread... but I too have this mouse, with the original PS/2 plug, so its easy for me to use as it is. However, of late, well since my cat vomitted on my desk, the clicks are showing up on my Mac as double clicks, and its pretty annoying. Could anyone provide advice on how to fix this issue? Contact cleaner or do I need to swap the mouse buttons, as they have worn out?

With thanks,

Spraying contact cleaner into the switches would be the first thing to try but, really, it's quite easy to replace the switches. You can learn a little about switches in this thread.

Thanks for the fast reply.


Sent from my iPhone using Tapatalk
IBM Model M SSK, HHKB Pro 2 BT and Realforce 104U HiPro

Offline ShivaYash

  • Posts: 157
  • Location: Berlin, DE
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #20 on: Fri, 16 March 2018, 10:56:07 »
OK so I have Omron Japan switches, but this means desoldering and resoldering. Which seems a little tricky.
Where is the best place to get these switches? In order to maintain the feel, should I switch out all switches, OR, if its not broke, don't fix it?
IBM Model M SSK, HHKB Pro 2 BT and Realforce 104U HiPro

Online Tactile

  • Posts: 1052
  • Location: Portland, OR
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #21 on: Fri, 16 March 2018, 11:47:44 »
OK so I have Omron Japan switches, but this means desoldering and resoldering. Which seems a little tricky.
Where is the best place to get these switches? In order to maintain the feel, should I switch out all switches, OR, if its not broke, don't fix it?

I'd replace all but I can't help as to sources for the switches in Europe.

At this point, if I were you, I'd start a new thread here with a title something like "Help replacing trackball switches in Europe". Ask your questions about soldering and also where to find the switches in Europe at a reasonable price. A lot more people will see your questions in that new thread than here.

Offline ShivaYash

  • Posts: 157
  • Location: Berlin, DE
Re: [Modding] CH Products Trackball PRO - BUSMOUSE to USB (Completed)
« Reply #22 on: Fri, 16 March 2018, 13:25:53 »
OK so I have Omron Japan switches, but this means desoldering and resoldering. Which seems a little tricky.
Where is the best place to get these switches? In order to maintain the feel, should I switch out all switches, OR, if its not broke, don't fix it?

I'd replace all but I can't help as to sources for the switches in Europe.

At this point, if I were you, I'd start a new thread here with a title something like "Help replacing trackball switches in Europe". Ask your questions about soldering and also where to find the switches in Europe at a reasonable price. A lot more people will see your questions in that new thread than here.

Thanks for the advice, however I have an update. I blew the circuit board clean with compressed air and suddenly the switch is now behaving itself... whilst I don't believe the issue has magically resolved itself, certainly for the moment, I have time to find a resolution; a competent person who I can trust to do this work. I'm in Berlin and there are some repair shops around, the problem is my German is almost nil. But I'll try my luck this weekend, and I will start a new thread as you have suggested. The Trackball Pro is a lovely thing, and its worth keeping it working.

With best wishes!
SY
IBM Model M SSK, HHKB Pro 2 BT and Realforce 104U HiPro