Two Methods to Fix Random Key Press Bug on Fascinate
Sometimes while engineering a device, a manufacturer misses a small problem. Here at XDA, we take these issues and make revisions to the hardware and the software. That’s one of the reasons why we have a whole forum dedicated to hardware hacking.
In this particular case, XDA Recognized Developer electric bill isolated a problem with a hardware interrupt on the the i500 Samsung Fascinate. The problem is a lack of capacitance on one of the physical buttons of the device. When the button is not pressed, random interference from both inside and outside of the device turns the button into an antenna. While there is a resistor that mostly takes care of the problem, it does not stop all issues from occuring. In the words of the hacker/developer himself:
The problem is that the touchkey chip is located right next to the 3G antenna. When the phone is accessing the 3G network the RF energy gets transferred to the interrupt and i2c clock and data lines causing false interrupts to occur. The processor responds to the interrupt by reading the key value from the cypress chip. The symptoms occur more frequently in low signal areas because the phone outputs a higher RF level in those situations which causes more RF interference on the interrupt line.
Electric bill came up with two solutions: both a software and a hardware filtering solution to this rather annoying problem. The software solution allows the device to ignore random key presses and continue on. This solution, while it works, is not ideal because the device is still reacting and wasting processor cycles every time it sees a change in the pin-state of the button in question. This means the user never sees it, but the hardware may slow down while reacting to and deciphering and filtering the key presses.
The hardware solution provides a filter at the hardware level. The hardware solution counters stray inductance by inserting a small capacitor into the circuit. This capacitor shunts randomness to ground, and provides somewhat of a hardware time-delay to the button press.
By far, the hardware solution is preferable. However, working with hardware means a risk of damage to the device. If you’re having a problem with your Samsung i500 Fascinate buttons, choose the method which is right for you. You can learn more by visiting the original thread.
[Thanks to XDA Elite Recognized Developer Rebellos for the tip.]