Saturday, June 24, 2017

Replacing the laser on an Arcam 62 CD Player

A few months ago I bought a CD player so that, for the first time in ages, I had a decent hi-fi set-up at home.  Prior to this I was using Chromecast Audio plugged into my Denon amplifier, and high bitrate mp3 over UPnP which isn't bad at all; but since most of my collection consists of physical discs, and secondhand players are cheap these days, I thought I'd take the plunge.  My local Oxfam had an Arcam Diva 62 player for £50 so it was in a good cause too.

Unfortunately the machine quickly failed.  It started with some clicks during playback - then it took a long time to read a loaded disc, and there were more unwelcome nosies as the disc played.  Finally it refused to play any disc at all.  This is usually a problem with the laser (either dirty or simply worn out). I'd grown to like the player and replacement lasers are cheap so I ordered a new one from ebay.

The laser that fits the Arcam 62 is a Sony KSS-213B. I'd read elsewhere that it's a KSS-213C so that's what I ordered but the two are interchangeable.  I actually ordered the complete mechanism KSS-213CDM just in case I could replace the whole thing but this wasn't the same size so I just used the laser.  Here's how it's done.

You'll need Torx T20 and T10 screwdrivers, a soldering iron (and ideally a solder pump), and about an hour.

Unplug the CD player and if you're wearing an anti-static wrist strap so much the better (otherwise touch a radiator pipe from time to time to earth yourself).

Firstly remove the four T20 screws, two from each side of the unit.  Then the three T10 screws at the back (at the top).  The cover will then slide off easily.

You then need to remove the three T10 screws holding in the main transport mechanism, there's one on each side (one shown below) and one at the rear.


The transport is connected to the main board by two ribbon cables.  You'll need to gently unplug the smaller, white cable at the main board end.  The grey cable needs to come out at the other end (the transport mechanism) and you just very gently pull the cable straight out.  Take care not to kink it.
Uplug the smaller cable as marked above
Simply pull out the larger cable.  To refit it push it gently back in.

The transport consists of three pieces: the top, the drawer and the main drive.  The top is held in place on each side by a couple of triangular prongs - squeeze these together gently and you'll be able to lift the top - and drawer - off.  It's likely at this point that one or more of the cogs that open the drawer will fall off, don't worry too much so long as you reassemble them correctly when you put everything back together - see the picture below.


On to the laser replacement.  All that keeps the laser in place is the metal rod 

This can be eased out by pressing at the white tab at the left end

Carefully feed the rod out until it is fully removed, you can then just gently take out the laser.  Disconnect the ribbon cable (like the grey cable earlier this is a pull-out, push-in job).  Before fitting the new laser it's very likely that it will need a bit of soldering.  Most lasers come with a protective "short circuit", I don't know why (perhaps to stop them shooting down spacecraft in transit?).  Anyway this needs to be removed.  Below I have the two lasers side by side, the old one on the left and on the right the new one with the protective short-circuit in place.  With a soldering iron and (if you have one) a pump remove as much solder as possible until there's a clear break between the two halves.

With that done, you can fit the new laser.  From here on everything is - as the Haynes Manuals used to say - the reverse of removal.  Connect the ribbon cable to the new laser and feed the small metal rod back through until it's fully in place.

Carefully reassemble the transport mechanism, starting with the drawer and then the top.  If it doesn't feel like it's coming together double-check that all the cogs fit together and that the white one is the right way up.  

Screw the transport back into the main body of the CD player, refit the cover and you should - with luck - have a player that's as good as ne

I plucked up the courage to do all of this after reading this post from www.hifigear.co.uk about replacing the laser on a similar model.  In the end about the only part that was the same was the steps to remove the front cover - but anyway, I found that post helpful and I hope you find my write-up is too.



Monday, January 02, 2017

Messing around in UPnP with socat 

For the last year I've been working on a UPnP server framework in Ruby.  Mostly I've only been able to do this in short bursts punctuated by long periods of nothing - as the github statistics will show.  But over the quiet bit between Christmas and New Year I've been able to make some progress and the server will now respond to SSDP search requests.

To test it I've been using gupnp-universal-cp which is a gui that can act as a client for any UPnP server.  But it's not (or not easily) scriptable so I can't write any automated tests.  Thanks to Javier Lopez I've found a scriptable way, the socat tool which basically pings network packets at an address and optionally stores the response.

My first attempt was the command

socat -T5 -t5 STDIO UDP4-DATAGRAM:239.255.255.250:1900,ttl=4,sourceport=54321 < socat.in > search.out

which sends the contents of the socat.in file to the UPnP multicast address, the idea being any servers out there would send a Discovery response which gets put into search.out.  You need to pick a random, free port (I chose 54321) for the server to respond to. 

socat.in contained a standard M-SEARCH request (everything between the two lines below)
_____________________________________________________________
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: "ssdp:discover"
MX: 1
ST: ssdp:all

 

_____________________________________________________________


However I found that only some of the servers I was expecting to respond were responding.  I ran the socat command again wrapped in strace and saw that the responses were being generated and picked up by socat, but weren't being dumped in the output file.

Looking at the socat documentation and the strace output in detail the reason for this is that some UPnP servers will respond to an M-SEARCH from port 1900 and some from a random, ephemeral port.  The UPnP standard doesn't say which is correct, but the socat command will only process responses from source port 1900 even if they are sent to the correct destination port (54321 in this case).

I'm not sure if this behaviour can be overridden in socat, to work around it I tried the following

socat -T5 -t5 STDIO UDP4-SENDTO:239.255.255.250:1900,ttl=4,sourceport=54322,reuseaddr < socat.in & socat -T5 -t5 STDIO UDP4-RECV:54322,reuseaddr > socat.out2

This runs socat twice, once to send the M-SEARCH requests and then immediately starts a second instance to receive them from any source port.  This worked much better with every UPnP server on my network sending a response that was recorded in socat.out2