A few Gen3 TC have come in that are dead shorted. Measuring with a meter across the main plug I get 0 ohms..or close to.. and even a low ohm meter could not track the fault. Eventually discovered the high value ceramic capacitors XR5 type are shorted.. these are grouped around the power converters and in a few other places on the board. It is almost impossible to figure out which is shorted.. unless you remove every one and test it.. long and difficult process for surface mount stuff.
If the board does not measure shorted 5v to Gnd and still does not work with a known good power supply.. it could also be shorted on one of the voltage rails although it is unlikely to be anything but 3.3v. I have found just one TC shorted on 3.3v.
You will need a multimeter if you don't have one go and buy one.. they are just a few dollars.
Another useful tool I use now is a small wattmeter.. these are used to measure power consumption by appliances in your house.. very useful as you will see if a power supply is working or not.
I tested a dead TC.. the wattmeter shows it is consuming 6W but not starting.. that means one of the converters has a shorted capacitor.
For the 3.3v I soldered on the gnd lead and used a crocodile clip to touch the inductor.
I also found a dead cap in the 3.3v rail when the 5v measured ok. So measure each inductor output.. the grey squares.. with the TC off on ohms.. it was immediately obvious that the 3.3v was shorted. That short prevented 1.0v, 1.1v and 3.3v supplies from starting .. only 1.8v was working.
Another problem also cropped up but seems not so common.. again poor ceramic caps but not shorted this time.. they have failed and no longer have much capacity.
The symptom in this case was bad ethernet.. I realised as long as ethernet wasn't actually plugged in TC worked fine.. I could access it by wireless no trouble. Ethernet worked until hot then failed to connect.. over time the issue became worse so the ethernet only worked for a few minutes from cold startup.. it was about an hour before.
Not the first time I have seen dead capacitors on router cause ethernet problems.. linksys routers were always having this issue.
I thought the issue could be an on board power converter. This model has 4 of them, producing 1v 1.1v 1.8v and 3.3v
1.8v is the highest current demand supply and most likely to break.. (after that the 3.3v).. 1.8v runs memory, processor and switch chip.
It was impossible to pick this up on a meter.. the fluctuation on the dc
side was from 1.86 to 1.85v and I would have discounted it.
But it
was clear on the scope that the power supply (5v to 1.8v converter) was
suffering when the switch chip was turned on during boot.
And especially
when I plugged in the ethernet cables it jumped to almost 0.3v ripple
.. It is now about 0.1v which may explain why the voltage is set a
little high.
Anyhow it is fixed.. the solution turned out to be fairly easy.
I soldered one of my normal Rubycon 1200uF Low Esr 6.3v caps across the 1.8v power supply.. this killed the bad ripple that was effecting the output of the supply.. I have now got it setup again.. doing TM backups and using both lan and wan cables..
The 1.8v converter supplies a lot more current than the others.
When you remove the board, undo all the screws and the 3 posts that support the bottom cover.
Carefully press in the steel spring clips (second one not pictured on other end of the steel frame) after you unplug the the rather tiny plug that goes to the LED.
Lift the board over so you can see the bottom.
The various power supply converters.
There is a 1v on top, next to the board plug.
Three on the bottom. Again adjacent to the board plug is 1.1v.
Above it and just under the wireless card, 3.3v
And just above the processor is the 1.8v.
Well here is my fix.. crude maybe but it worked fine. Too much hash on the 1.8v line.
Rather than try and remove and replace all those surface mount capacitors.. for which I do not have the equipment.
I measured there is exactly enough room for the capacitor to fit. Solder gnd side to the gnd ring around the processor.
And positive to the end of the inductor.. use enough heat to get a good solder joint but not excessive for the inductor to come off.
I did resolder it with components leads as short as possible... but make sure the cap can sit flat to the board.
I used a high grade 1200uF 6.3v I use for power supply repairs.. actual spec is not a big deal. Use a LOW ESR cap though.. >1000uF.. any motherboard one should be fine.
If any of the silicon rubber heat sink materials come off carefully position them as you place it back.
Now something new. Serial Console access.
The next step in the journey.. since I had a faulty but possibly repairable Gen3 I was asked about serial and jtag.. well I have seen the port there under the power supply.
Credit to
Mikhail Emelchenkov He took up the suggestion and found Tx output on the board of the Gen2.
The 20pin connector under the power supply includes serial port .. maybe two of them but one is not connected.
Pins used are 11 Tx and 13 Rx. You can get 3.3v from pin 19 & 20. Gnd I just used the connector pad. (this is isolated in Gen1 and possibly Gen2 boards. )
I glued in a piece of connector strip.. so once the cables were soldered no pressure would be put on the contacts..
Those surface mount solder pads will come off if you breathe on them.
I used 28AWG enamelled wire.. to make the connections.. it is more convenient to use than tinned copper being insulated, and this one is special enamel that comes off with soldering iron heat.
This is as tiny as I would ever want to go.. the 20pins have 0.5mm spacing. You need to take huge care. A large magnifying glass.. and a lot of measurement to clear any shorts.
Jtag is there as well but I am not really interested at the moment. It was hard enough to solder a couple of pins.. soldering 6 of them I think I would try and find the proper socket and solder that on.
BTW finding a suitable serial terminal on the Mac has been a pain. I used hyperterminal on XP PC and frankly it was far better than anything I could find that was easy to setup on the Mac.
I did find this one though.
http://www.furrysoft.de/?page=goserial
Still doesn't work as well as I think hyperterminal or putty does on a pc.. but at least it works.. zterm.. which was the only other terminal I could find that allowed me to set serial port correctly, 115200 8N1 no flow control, crashed the Mac at critical points. Don't go there.
What you get out of course is ttl - lv which need a usb to ttl or serial to ttl converter.
You can get them readily on ebay.. some do not need to be powered using 5v from the usb. That means you only need Rx Tx and Gnd.
In the meantime here is a taste of things to come.
With Root console access.. NetBSD is not dissimilar to Linux router firmware I am used to.
# l
total 65
drwxr-xr-x 15 root wheel 512 Jan 18 21:58 .
drwxr-xr-x 15 root wheel 512 Jan 18 21:58 ..
-r--r--r-- 1 root wheel 54 Mar 10 2011 .editrc
-r--r--r-- 1 root wheel 2002 Mar 10 2011 .profile
drwxr-xr-x 3 root wheel 512 Jan 18 21:58 Library
drwxr-xr-x 4 root wheel 512 Jan 19 07:26 Volumes
drwxr-xr-x 2 root wheel 512 Mar 10 2011 bin
drwxr-xr-x 2 root wheel 21504 Mar 10 2011 dev
drwxr-xr-x 10 root wheel 1536 Jan 18 21:58 etc
drwxr-xr-x 3 root wheel 512 Mar 10 2011 lib
drwxr-xr-x 3 root wheel 512 Mar 10 2011 libdata
drwxr-xr-x 2 root wheel 512 Mar 10 2011 libexec
drwxr-xr-x 5 root wheel 512 Jan 18 22:00 mnt
drwxr-xr-x 2 root wheel 1536 Mar 10 2011 sbin
drwxr-xr-x 2 root wheel 512 Jan 18 21:58 tmp
drwxr-xr-x 7 root wheel 512 Mar 10 2011 usr
drwxr-xr-x 11 root wheel 512 Jan 18 21:58 var# envPWD=/etcHOME=/PATH=/sbin:/usr/sbin:/bin:/usr/binTERM=vt100TERMCAP=vt100:snip snip.USER=rootHOSTNAME=LOGNAME=rootSHELL=/bin/shHere is a neat command..
# envstat Sensor temperature MLB temperature Fan speed Fan duty-cycle degC degC RPM integer 39.50 44.00 0 0.00There is a pdf of the serial and bootloader output that I captured. Please download and read it but not post it elsewhere.
I am currently working on a modification Apple made in Gen 4 to turn on the fan..
# i2cctl r 0x18 0x00 320x77 0x2F 0x00 0x20 0x98 0x00 0x84 0x00 0xFF 0xFF 0x2C 0x27 0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00 0x50 0x00 0x7F 0x00 0x41 0x00 0x50 0x7F 0x34 0x50 0xFF 0xFFA different day and time.. slightly different numbers. Some will be temperature measurements.
i# i2cctl r 0x18 0x00 320x77 0x2F 0x00 0x20 0x98 0x00 0xC7 0x00 0xFF 0xFF 0x2D 0x29 0x00 0x00 0x00 0x00 0xFF 0xFF 0x00 0x00 0x50 0x00 0x7F 0x00 0x41 0x00 0x50 0x7F 0x34 0x50 0xFF 0xFFOk, turning on the fan is as simple as resetting to default.
i2cctl w 0x18 0x00 11010100So this command writes the first register 0x00 but you need to use binary value. (reads hex writes binary).
But the values are not stored.. any alteration is lost on reboot. I was thinking the values are written and held until a rewrite but it isn't so.
In fact the default value at turn on is what is causing the fan to run at power on.. several sec after boot the fan is turned off. this is the point when the processor writes the values to the fan chip.. shutting it off.
Turning the fan back on then just consists of writing the values to the fan chip again.. but we can do much more interesting things.
I still cannot see rpm of the fan in the evnstat command.
A picture of the old way..