Seems like the only thing left is to solder the button straight to the motherboard. This can be done by soldering a push button to 10th topleft pin and to any of ground pads at the keyboard connector:
However, since R61 comes with an unpopulated docking station connector which also exposes the power button pad, it’s actually easier to use it instead. The pads are covered with solder mask, so it should be removed with sandpaper before soldering. Here we would need to connect 2nd bottomright pad with any of the ground pads:
]]>If you have Windows XP laying around then just download firmware package for E30 and follow the steps bellow. On Windows 7 the updater bundled with E30 wouldn’t work, but the one from E40 firmware package can be used instead. Just overwrite updater.sb and E40.Hex in the E40 firmware package with updater.sb and E30.Hex from E30 package.
By the way, an actual Windows machine might be needed for this, it didn’t work for me with VirtualBox under Linux.
Implementation Concept
For each image in the collection compute descriptors with the algorithm best fitting your requirements. I am using SURF, however depending on the required license, performance or image nuances a different algorithm might be more appropriate.
Combine all the descriptors into one big matrix while keeping track which descriptor range within the matrix came from what image. Basically we concatenate rows from all matrices and save the row number where the newly appended descriptors start and end.
Build a FLANN index from the concatenated matrix.
Compute descriptors for the query image.
Run KNN search over the FLANN index. A KNearestNeighbours search computes the distance between a query descriptor and all of the image collection descriptors, and returns the K pairs with lowest distance. KNN search will produce two matrices – Indeces matrix and Distances matrix containing indices of descriptors within the concatenated matrix which had the lowest distance and the distances themselves, respectively.
Filter out all the inadequate matches computed in the previous step.
Now we can find images matching the query image. Since we know which descriptors within the concatenated matrix belong to what image, the best matching image will be one that has the higher number of descriptors, or more precisely descriptor indexes in the Indices matrix.
Implementation
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 

1 2 3 4 5 6 7 

1 2 3 

E6 20% tolerance
E12 10% tolerance
E24 5% tolerance
E48 2% tolerance
E96 1% tolerance
E192 0.5, 0.25, 0.1% tolerances
Such division ensures that substituting an arbitrary value with nearest preferred value wouldn’t exceed the required tolerance. In other words, given a tolerance and an arbitrary resistance value we can calculate the preferred value using the above table.
Fortunately there is much neater way to do this. It is possible to approximate Eseries preferred values (which is basically Renard series with different interval steeping) with the following equation (author unknown):
Where R is the resistance, round() is round to nearest integer function, and round2decimal() is round to 2 decimal places function.
The equation seemed to work for E48 and E96 series, but gave wrong values for other.
The code below is its adaptation for JavaScript and for the rest of the series E12/24/192. The function accepts resistance value in Ohm plus tolerance and produces closest preferred value.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 
