Logitech M705: How to fix a defective mouse button

I’m a big fan of Logitech mice, or at least was until a few days ago. My wireless Logitech M705 started to behave strangely: Pressing down the left mouse button resulted in multiple clicks (i.e. double-clicking) and dragging became impossible due to random interruptions when holding down the button.

Without a warranty (which had expired three months ago) I did not feel guilty when opening the mouse to look for the cause. The culprit was quickly found: the microswitch of the left mouse button. Luckily, I had spare microswitches as I’m currently playing around with the optical sensors from other spare/defective mice. I will cover this in another post. To come to the point: after replacing the microswitch, the mouse works again as usual. I’ve made a few photos (a picture is worth a thousand words 😉 ) to help others during disassembly of the housing. Screws are marked red, and I have also marked (in yellow) two tiny springs that can easily be lost.

This fix has a bad aftertaste: at least in Germany, there is much talk about “planned obsolescence”, and I’m wondering if Logitech (and other manufacturers) use cheap microswitches that only survive a certain number of clicks. Especially after my mouse showed the previously mentioned defect so soon after the expiry of the warranty… On the other hand Logitech kept its promise regarding the battery life – I’m still using the first set.

Update (2014-11-22): Just as a brief clarification, after I got some feedback on the M705. (Apparently several users have had similar experiences.) Logitech uses Omron switches that actually seem to be pretty good. So I want to point to posts from Kogos and Ralf  below: First you should try what is recommended in a Logitech forum post. After that you might try resoldering the joints. If that doesn’t help an exchange might be the best option…

HowTo: Running Eagle CAD 6.2 on Ubuntu 12.04/12.10/13.04

Update: Eagle CAD version 6.4 is available which runs fine on Ubuntu 12.04., Ubuntu 12.10 and Ubuntu 13.04. I’ve made a small tutorial on how to fix possible dependency problems with this new version.

Ubuntu 12.04 only provides an older version of Eagle CAD, version 5.12.0 to be exact. A newer version 6.2 (32 bit) is available for download, but the installation fails due to the lack of a 32 bit libpng-1.4 library:

error while loading shared libraries: libpng14.so.14: cannot open shared object file: No such file or directory.

Luckily, I found a detailed post at raek’s blog which covers older Ubuntu versions. Great parts of the following instruction were taken from this post and adapted for Ubuntu 12.04. Thanks!

First of all you need to install some packages to build the missing png library. Open a terminal window and enter on a 32 bit Ubuntu 12.04:

sudo apt-get install build-essential perl
sudo apt-get install zlib1g zlib1g-dev

On a 64 bit Ubuntu 12.04:

sudo apt-get install build-essential perl gcc-multilib
sudo apt-get install ia32-libs lib32z1 lib32z1-dev

Then you need to fetch the libpng source code and the Eagle CAD 6.2 installer, either with “wget” (as I have done it) or directly from the respective webpages. A current version of Eagle CAD is available for download here: http://www.cadsoftusa.com/download-eagle/
libpng 1.4 can be found on this page: http://www.libpng.org/pub/png/libpng.html
I will use the “/tmp/libpng-eagle” directory for building the library:

mkdir /tmp/libpng-eagle
cd /tmp/libpng-eagle
wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng14/libpng-1.4.12.tar.gz
tar xvfz libpng-1.4.12.tar.gz
cd libpng-1.4.12/
./configure --prefix=/tmp/libpng-eagle/install CFLAGS=-m32
make check
make install

At this point I assume that your Eagle CAD installation will be located at “/home/$USER/eagle-6.2.0“. If not, simply adjust the location in the text below:

cd /tmp/libpng-eagle/install/lib/
mkdir -p /home/$USER/eagle-6.2.0/lib
cp -a libpng14.so* /home/$USER/eagle-6.2.0/lib/

Now the installer should run…

export LD_LIBRARY_PATH=/home/$USER/eagle-6.2.0/lib/
cd /tmp/libpng-eagle/
wget ftp://ftp.cadsoft.de/eagle/program/6.2/eagle-lin-6.2.0.run
chmod 755 eagle-lin-6.2.0.run
./eagle-lin-6.2.0.run

After the installation finishes, Eagle CAD will still not run unless you tell it where to find the png library we have just created. The easiest way to do this is by creating an executable start-up shell script (e.g. /home/$USER/eagle-6.2.0/eagle.sh) which contains the following commands:

#!/bin/sh
export LD_LIBRARY_PATH=/home/$USER/eagle-6.2.0/lib
/home/$USER/eagle-6.2.0/bin/eagle

Additionally, you could create a Unity/Gnome menu entry, for example “/home/$USER/.local/share/applications/eagle.desktop
(do not forget to adapt the $USER):

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=/home/$USER/eagle-6.2.0/bin/eagleicon50.png
Name=Eagle
Exec=/home/$USER/eagle-6.2.0/eagle.sh
Comment=Eagle CAD

Update: A friend told me that the installation procedure also works with Ubuntu 11.10.

HowTo build the ARB software package from source code

Every now and then someone on the ARB mailing list asks for help on how to compile (or install) the ARB software package. I have created a 10 minute video tutorial that shows typical pitfalls that may occur when building the ARB software package (http://www.arb-home.de/) from source code. The build system was 64-bit Ubuntu 10.04, but I think the video might help users with other Linux distributions as well.

Scanning network drives and shares with Avira Antivir

I use a NAS to store files I do not directly need on my notebook hard drive (due to limited space on my SSD). From time to time I need to boot Windows and I regularly use this opportunity to scan my complete system for viruses. The installed free version of Avira Antivir, like most other free scanners (as far as I know), prevents scans on network drives. This feature is reserved for the professional version. Apart from the safety aspect, this has been annoying me for a while…

Playing around with different mount techniques to get the antivirus software to scan my network shares, I eventually stumbled over symbolic links (surprise). What I did not know: you can create symbolic links not only of files or directories, but also network shares.

Symbolic links from network shares can easily created in with the mklink /d command. (Found it on MS TechNet and in the Windows 7 forum).

C:\>mklink /d "c:\folder" "\\NAS-NAME\folder"

You need administrative rights (an administrator cmd shell). You can then use the explorer to browse into the newly created (linked) directory and scan it with your virus scanner.

Klipsch S4i: Repair broken earbud headphones

Note: Please also read the comments as there are updates & fixes available!

Update: I’ve fixed the graphics showing how the different bundles of cables should be attached to the connector. A big thank you to Rock for correcting me on this!

I am a fan of good-sounding in-ear headphones and bought a Klipsch S4i for my iPhone 3GS. I am really impressed by its quality and they are not overpriced (around 80.- € when I bought them). Last month, the connector on the headphone cable began to loosen. I tried to fix it with cyanoacrylate adhesive but a few days ago the cable finally broke (resulting in a dead left channel and microphone).

I am pretty sure this type of defect is not covered by the manufacturers guarantee (another point: I purchased them over two years ago) so I didn’t bother disassembling the connector. The first thing I did was removing the plastic cover of the connector with a utility knife.

The soldering spots are enclosed in clear plastic. I tried to remove the plastic and gently desolder the cables from the connector, but the connector broke (actually it melted). At least I was able to identify the six bundles of thin twisted wires.

Corrected Cable Assignment for the Klipsch S4i Headphone
I separated the colors and twisted them together into four bundles (one for each contact on the connector) and resoldered them onto another spare connector. The fixed connector lacks the ‘stylish’ finish it previously had, but the shrinkable tubing makes a good protection for the thin wires. And the complete functionality is back, including the microphone and the control buttons.

Update: The new Klipsch S4i model has a revised (improved) kind of connector. Maybe I was not the only one with a broken cable…

 

Update for users of the Android version (Klipsch Image S4 II) headphones.
A big thank you to “WCSTUR” (whoever you are) for sharing this information per e-mail:

Changes to your wiring diagram for the Klipsch Android version:
TIP – green wire (always left earbud)
Band 1 – red wire (always right earbud)
Band 3 – the 2 earbud copper wires AS WELL AS the red and blue-green shield wires for the microphone. This band is the ground. (Your diagram shows the microphone red and green-blue shield wires connected to the earbud wires. Your diagram may also work since the earphone impedance to ground is only about 18 ohms for each of these earbuds.)
This wiring follows what I dissected from the original plug.

HowTo: Compact Virtualbox VDI images

I just ran into an issue while trying to compact my Virtualbox hard drive images. On virtual NTFS filesystems I usually run defrag twice, then rely on a tool called sdelete (download page) to zero the free space within the image. Afterwards I use vboxmanage to reduce the image size.

This time either zeroing the free space or the shrinking process seemed to fail. The supposedly compressed images needed even more space than before. It took me a while to figure out what happened – the parameters of sdelete had changed:

C:\>sdelete

SDelete - Secure Delete v1.6
Copyright (C) 1999-2010 Mark Russinovich
Sysinternals - www.sysinternals.com

usage: sdelete [-p passes] [-s] [-q] <file or directory> ...
       sdelete [-p passes] [-z|-c] [drive letter] ...
   -a         Remove Read-Only attribute
   -c         Clean free space
   -p passes  Specifies number of overwrite passes (default is 1)
   -q         Don't print errors (Quiet)
   -s or -r   Recurse subdirectories
   -z         Zero free space (good for virtual disk optimization)

It feels like 99% of the tips concerning zeroing the free space (by calling sdelete -c, the old option for zeroing) seem to be outdated. Even worse: the “clean free space” feature shows the same output as “zero free space”.

So this should (currently) be a working procedure:

  1. On the guest system: Run the Windows “defrag” tool twice.
  2. On the guest system: (Download and) run “sdelete -z” to zero the free space.
  3. On the host system: Use vboxmanage “modifyvdi IMAGE.vdi –compact” to reduce the image size.

D-Link DI-614+ Router – Firmware modding

This is a summary of the firmware modification I had made ​​some years ago. The router does not exist anymore and the modifications are no longer maintained. But some people still seem to be interested in the old postings…

Warning: all modifications on your router may void your warranty. I do not claim any responsibility for any form of damages that may result out of the use of the modified firmwares. These firmwares only work with the DI-614+ Rev.A router (two antennas).

Second warning: increasing the output power also results in a higher processor temperature. Additional cooling by adding a heat sink and/or fan to the router might be necessary. I mean it! I think I blew my router that way…

[2004-11-11] a new modded firmware version is available: di614_fw233k1.zip (and untested: di614_fw233k2.zip)

This modified firmware is based on the original firmware v2.33 which is available on the D-Link website. The DDNS problems are now fixed by the official release, the modified version has the following additional changes:

Powerhack (19dBm)
Wireless LAN channel 1-14 support
Increased log readability

[2004-05-05] modified firmware di614_fw230k1d.zip

Just a minor fix compared to the other changes. I modified the ‘Status->Log’ tab a bit. Now all entries a displayed in a grid. This increases the readability of the log.

[2004-04-30] modified firmware di614_fw230k1c.zip

I was told that the DDNS firmware settings were still not working, although they were saved now. Comparing the older firmware version (v2.20) to the newer one I found out that D-Link used different names for the fields of the DDNS entries. I exchanged the new field names with the ones from the older firmware ,et voilà, I get a wonderful ‘DDNS: good .xxx.yyy.xxx.zzz’ in my logs now.

[2004-04-29] modified firmware di614_fw230k1b.zip

Just added another feature to the 2.30 firmware, the so called ‘power hack’. As I was told this seems to be something cool others are waiting for, so I looked at an interesting page about a software hack on the DWL-900AP. Thanks to that hacked firmware I’ve been able to modify the DI-614+ firmware as well. The option ‘Max. 19dBm’ is now available. I have not validated the power gain yet but will do so as soon as possible.

[2004-04-28] modified firmware di614_fw230k1a.zip

Shortly after repairing the DDNS form yesterday I recognized that another feature I liked was missing in the original v2.30 firmware, the wireless LAN channels 12, 13 and 14 (I never had 14 before ;-)). I found out that these channels are not deactivated in the router, they are just hidden from the user. So I modified the firmware once again and added the missing channels in the user interface. I have successfully tested the channels up to 13 using NetStumbler, channel 14 was not found (well, it’s not that widespread anyway).

Known side effects:
Sometimes the channels 12 and 13 appear twice in the drop-down list. You can select either, this has no effect on the routers functionality.
After enabling the wireless LAN with channel 12 or 13 for the first time the router jumps back to channel 6. Reselecting the channel 12 or 13 will fix this. (Verify the channel by selecting ‘status’ in the router configuration.)

[2004-04-27] modified firmware di614_fw230k1.zip

I have modified the firmware version 2.30 from D-Link and corrected the malfunctioning dynamic DNS form. Although I am currently running it on my own router and it seems to work fine, I do not guarantee for anything.

You can use the flash binary converter tool arj2bin.tar.gz to create valid firmware files on your own.

If something goes seriously wrong…
…the D-Link DI-614+ factory default reflash procedure:

The DI-614+ has a tiny flash program saved in the boot sector of the flash that cannot be overwritten. You can restore your flash eeprom by doing the following:

  • Get an original firmware from the D-Link website
  • Power off the router and remove all but the network cable to your computer
  • Give your computer the static IP address 192.168.0.100
    (It might be necessary to remove all other settings, e.g. gateway, DNS, …)
  • Push and hold the reset button down with a paper clip or something similar
  • While holding the reset button down plug the router back in and keep holding the reset button down for 10 seconds
  • Open a browser and go to http://192.168.0.1

You should see a simple web page with an edit box, a browse button and a send button. Use this to flash your router with the D-Link firmware and all should be well again.