Oct 17

Apple 27 iMac Teardown, SSD Hack and 2TB Upgrade

My 2010 27″ 1TB iMac ran out of disk space because of the video content I was creating. Despite Apple’s best effort to limit my upgrade options I manage to upgrade it to include a 250GB Solid Sate Drive (SSD) plus a 2TB Hard Disk Drive (HDD) and get my system back to its last working state but with lots more disk space and much faster boot and application load times. Plenty of gotcha’s along the way – I had to work out and do a few ad-hoc adaptations. I cover new disk preparation, computer tear down, SATA adaptation, HDD temperature sensor hack and data moving, and data and account recovery.

This is the longest video and the longest blog article I have written to date, and thats reflective of how much there is to cover – is not a simple task.

I removed a Seagate Barracuda 7200 1TB drive which is still in working condition, despite being one of the drives on a recall by Apple. They offered to replace the drive some time back but I refused as it was inconvenient to be without my computer for a week, let alone the hassle of taking it to and collecting it from an apple store.

I installed the following components.

  • Samsung SSD 840 Series 250GB
  • Western Digital Green 2TB – 6 Gb/s 64Mb Cache
  • SATA 90 degree Cable
  • SATA Power Splitter

The 2TB drive was a perfect physical fit but did not have a compatible on board temperature sensor so I had to fashion one from a transistor, I used a TO-92 2N2907 and used the base-emiter junction as a silicone temperature sensor. The SSD drive had to be installed with double-sided tape but being so small and light this was the best solution. The whole modification to the computer is 100% reversible.

WARNING: This is an EPIC video at 1hr 20mins so only watch if you are really interested and have some time on your hands :)

The following outlines the various commands and steps I took to make this work. I am not saying this is either the only way or the right way, its the way I used and it worked for me. The most important thing I wanted to achieve was to preserve all of my data and never have a single point of failure for my data throughout the entire procedure.

Before we do anything we must ensure that…

  • The computer is in a working state.
  • Have a *FULL* backup of the system – in my case this was on an Apple Time Capsule
  • Ensure the current system has *all* software and OS updates applied.
  • Ensure that you are logged in and have administrative rights on the account you normally use

Tools Used

Prepare SSD Drive

  1. Using the drive copy station, connect the SSD drive to the computer via USB
  2. Choose “Ignore” when you are prompted to initialise the disk you just connected.
  3. Using the Applications/Utilities/Disk Utility create a single partition on the drive – use all default options, call the volume “OS Boot” or other name you will recognise or makes sense to you
  4. Run the OSX Mountain Lion Installer application
  5. When shown the drive to install on, press the Show All Disks button and select the drive you just created a partition on
  6. During the install follow all instructions as if you are doing a new OS install, once complete it will want to re-boot, let it do what it wants. Eventually it will boot to your new drive
  7. During the installation it will want you to create the administration account, call this “Admin” or something else you do not already have on your current system.
  8. Don’t worry, your existing drive will still be intact. Once you have booted from the SSD drive and verified its OK, shut down the computer unplug the SSD and re-start, it will boot to the original drive once again.

Prepare New HDD Drive

  1. Connect the new drive to the USB using the drive copy station
  2. Choose “Ignore” when you are prompted to initialise the disk you just connected
  3. Using the Applications/Utilities/Disk Utility create a single partition on the drive – use all default options, call the volume “Users”
  4. You should now see your new 2TB disk in finder, the disk should be empty.

Now we need to create a temporary account to unlock your profile so we can copy your home folder to the new drive.

Create a temporary Admin Account

  1. Open System Preferences/Users & Groups
  2. Unlock the panel if required
  3. Add a new user, in the New Account field select Administrator
  4. Log out of the system, and log back in using this new account you have created

At this point you are ready to make a copy of your user profile(s) from your existing 1TB disk to your new 2TB disk. Open a new terminal window (Applications/Utilities/Terminal). You can list the accounts on your system by issuing the following command: -

ls -li /Users

For each account on your system that you want to re-locate to the new 2TB drive you should issue the following command: -

sudo ditto -v /Users/<ccount_name> /Volumes/Users/<account_name>

You should obviously replace the <account_name> part with the account name. In my case the command was: –

sudo ditto -v /Users/gerrysweeney /Volumes/Users/gerrysweeney

NOTE: You do NOT want to make a copy of the temporary admin account you created earlier that you are currently logged in as…

Do the hardware hacking

At this point you are ready to start the disk transplant process. You want to do the following things in order.

  1. Shutdown the computer cleanly
  2. Unplug all cables
  3. Take the computer apart and remove the 1TB hard disk
  4. Transfer the mounting braket and studs from the 1TB drive to the new 2TB drive
  5. Put the old 1TB drive into an anti-static back and put in a safe place – this is your fast recovery/back-out plan
  6. Remove the optical drive, screen backlight supply and main power supply boards, and then the main board – see video
  7. Install the new SATA cable for the SSD drive – either use the third SATA port or remove optical drive SATA cable and use that port – depends on your iMac model
  8. Replace the main board and PSU baords, take a lot of care routing the new and existing cables, there is very little room for error here
  9. Install the SSD drive using double-sided sticky pads – make sure its well fixed, you do not want it coming loose as it will interfere withe air flow that cools the GPU – this will Kill your iMac!!
  10. Re-install the optical drive (with or without being connected), the drive carrier acts as part of the air ducting…
  11. Install the new 2TB drive
  12. Fashion a suitable temperature sensor for the new HDD, I simply used a 2N2907 transistor which works a treat from what I can tell
  13. Re-assemble the computer
  14. Power up and make sure it boots to the new SSD drive
  15. Log into the “admin” account you created – this should be the only account on the system

If all has gone well you should have a fresh new OS and you should be logged in as administrator. The next thing we need to do is re-create the accounts and then re-locate their home directory.

Follow these next steps carefully…

First of all you need to create a new account for each account you have re-located. In my case the account I relocated is “gerrysweeney”. So go into the System Preferences/Users & Groups tool, unlock it if needed, then create the new account. By default, this will create a new account home folder on the SSD, thats OK, we will need to deal with that next. If you have more than one account you have re-located, create a new corresponding account for each one. When you create the account, use the same password as your previous account, this way your keychain will remain accessible and valid once you re-instate your home folder.

Now you have a new account with a new home folder on the SSD drive, the next thing is to modify that account and point it to the home folder you previously re-located. In my case the account was “gerrysweeney”. In the Users and Groups tool, press the “Ctrl” key and click on the account name, you should get a menu option called “Advanced Options…”, select this. The “Home Directory” field will be set to “/Users/gerrysweeney”, you should change this to “/Volumes/Users/gerrysweeney”. Again, do this for each account you have re-located.

UPDATE: Having done this I realised that later on I still have to set up a symbolic link to the home folder which is a couple of steps below. In lights of that you can simply skip the above step of modifying the account properties to re-locate the home directory. Once the symbolic link is in place it will work without doing this.

Now we need to change the permissions of each account’s home folder data to the account – this is important to re-syncronise all permissions. Open a terminal window and for each account you have re-located you should issue the following command: -

sudo chown -R gerrysweeney:staff /Volumes/Users/gerrysweeney

This command will change the ownership of every file in this folder, including the folder its self and all sub-folders and files. Now I am not sure this is exactly right, it is feasible there are system files that should be protected from the user but I don’t know – what I done worked OK so its pretty safe. In any case you need to do this for every account you have moved – remember to replace “gerrysweeney” with the right account name.

Now you have given the right ownership to your files, we now have to deal with the fact that much of your existing configuration will be looking for profile and other content from /Users/gerrysweeney, and the way we deal with that is by creating a symbolic link. In the terminal window you should issue the following command to delete the newly created home folder on the SSD drive that we no longer need.

sudo rm -rf /Users/gerrysweeney

Now you should create a symbolic link to map the expected home folder location to the relocated folder on the new 2TB drive. To do this you should issue the following command:

sudo ln -s /Volumes/Users/gerrysweeney /Users/gerrysweeney

You should do this for each account you have relocated. You can double check this operation worked by issuing the following command:

ls -li /Users
which should show you something like this...
total 8
 135869 drwxrwxrwt  13 root   wheel  442 13 Oct 20:22 Shared
 329606 drwxr-xr-x+ 13 admin  staff  442 14 Oct 10:18 admin
1056113 lrwxr-xr-x   1 root   admin   27 14 Oct 10:17 gerrysweeney -> /Volumes/Users/gerrysweeney

You can see that gerrysweeney is pointing to /Volumes/Users/gerrysweeney

The next thing we need to do is recover your applications. You have the option of simply re-installing them all but thats a right royal pain, I found this worked really well and mostly re-instated everything for me.

Get your original 1TB disk and using the Disk Copy Station connect to the computer via USB, you should be able to see this drive in finder. Make a note of the volume name for the drive – in my case this was “Macintosh HD”. In order to recover the applications, you basically need to copy all of your Library and Application Files to the SSD. To do this issue the following commands: -

  ditto -v /Volumes/Macintosh HD/Library /Library

  ditto -v /Volumes.Macintosh HD/Applications /Applications

  ditto -v /Volumes.Macintosh HD/Developer /Developer

Now with all that done, you should eject the original 1TB HDD using Finder and you should shutdown and re-start the computer. While re-booting you can unplug the Disk Copy Station, you should not need it any more.

At this point you should be able to log in using your original account – in my case this was “gerrysweeney”. If everything worked out OK then you will now have a working system, your desktop, applications and settings should all be restored and in the same state as they were before you started.

Set aside a day to do this, its a pain, there is a lot of fiddling around and there is a lot of waiting for stuff to copy. In the end though its a worthwhile mod that Apple does not want you to do.

Enable TRIM


UPDATE: I had found this after I finished the article and Anton pointed out in the comments I should include this information because it is important. Thank you Anton.

In order to maintain the healthy state of your SSD and prolong its life you need to enable the S.M.A.R.T features and make the OS and the SSD Drive communicate using the TRIM commands. This basically allows the OS and the SSD drive to play nice and help prolong the life of the SSD by minimising erase cycles, the OS simply informs the drives that blocks are no longer in use. Doing this is easy, you can simply install a piece of software called Trim Enabler which takes care of this for you. If you want to know more about TRIM you can read this wikipedia article

trim1  trim2

IMPORTANT DISCLAIMER

DO THIS AT YOUR OWN RISK. I HAVE PROVIDED THIS ARTICLE IN THE HOPE THAT IT WILL BE USEFUL FOR OTHERS. HOWEVER, YOU SHOULD KNOW THAT OPENING YOUR COMPUTER INVALIDATES ANY WARRANTY YOU MAY HAVE AND WHILE THIS APPROACHED WORKED FOR ME, IT MIGHT NOT WORK FOR YOU AND IF IT ALL GOES WRONG FOR YOU I CAN NOT BE HELD RESPONSIBLE. THERE ARE LOTS OF DELICATE AND SENSITIVE ELECTRONICS THAT ARE EASILY DAMAGED IF YOU DO NOT HAVE EXPERIENCE HANDLING THEM – PLEASE ONLY DO THIS IF YOU ARE CONFIDENT IN YOUR OWN ABILITIES

Sep 15

Keithley 2110 DMM Teardown

Following on from my review of the Keithley 2110, I tamper with the tamper-proof seal and open up the meter to see what was inside. While I am there I have a look at the build quality and the overall system architecture. Keithley have a long history of building quality test equipment and I thought it would be nice to see how the latest kit from Keithley stacks up to their past reputation.

The meter is easy to get apart and is built really well, nice solid construction and really very difficult to fault – apart from the really poor LCD display. Please see the video for the details as they unfold.

System Level Block Diagram

Keithley 2110 Block Diagram

Catch you next time…

Sep 15

PSION II Teardown – Retro Tech for those Yuppies of the 80′s

The PSION II was the worlds first PDA (Personal Digital Assistant) and was revolutionary in its time. In reality it was next to useless for most things but if you persisted you could store your contacts in it at a push. In this video I take it apart to have a look inside at that 80′s 8-bit computing excellence, break it and repair it along the way.

The architecture is basically a simple 8-bit computer based on a Hitachi HD6301 CPU (now obsolete of course) which was a CMOS version of the now legendary 6800 microprocessor. The CPU running at just under 1MHz along with a couple of EPROMS and some SRAM make up the entire system, very simplistic by todays standards. The portability was made possible because of both the CMOS technology as well as surface mount components which were are relatively new innovation at the time.

The system used Data Packs which at the time were quite expensive. A Data Pack is essentially an EPROM while a RAM pack is a battery backed SRAM chip. These packs are in small cartridges and the PSION II could have two cartridges loaded at any one time. When the Data Pack got full you had to remove the small board from the cartridge and expose the internal EPROM’s window to UV light – not sure how PSION got away with marketing this but I suppose at the time thats all that could be achieved for permanent storage in such a small package.

This is a very hackable device but when all said and done – what would you use it for. The one thing it could be converted to is a portable EPROM programmer, that would not take much effort but EPROMS are not really much use now days. So with nostalgia set aside I cannot think of any sensible use for this (except donating to a computing museum perhaps) so its going into the garage on the “Of no earthly use but too nice to throw away/scrap”!

I found some useful links on the web which describe the technical and user details of these machines which I have provided below.

HD6301 8-BIT CPU383 downloads
Sep 04

Racal-Dana 1999 Teardown, Repair and Calibration

I have been using this Racal-Dana 1999 counter for a long time and in the last few months it started to suffer from an intermittent fault where it would appear to freeze and stop responding. Banging the unit on the side with the palm of my hand would get it going again, and when doing this it would often restart as if its been powered on. In addition to this fault, the counter suffers from an altogether common problem with the buttons on the front which loose any tactile feel to them and become difficult to actuate – this is a common problem on these counters and thats down to the poorly designed switches Racal used for its frequency counter range.

I identify the fault and fix the problem and I replace all the buttons with ones that work and end up with a fully restored frequency counter once again.

I have made the manual including schematics available here for your convenience

See you next time….

Aug 03

Build a 10MHz Rubidium Frequency Standard and Signal Distribution Amp for my Lab

Having gotten myself a Rubidium Frequency Standard I found that the unit on its own is not that useful, its really just a component and needs really a supporting PSU and a decent enclosure to make it useful. I was searching around for something suitable when I was directed to a robust quality unit being sold on e-bay for just £20 with an unbelievable level of re-usable content and turned out to be an almost perfect solution to making the Rubidium Standard a useful Lab item. Rarely does such a fine marriage of junk bits come together to make something really useful.

I had a lot to cover, the whole thing was built in an afternoon and as a result this is a long video at 1 hour 16 mins so be prepared…

The PIC Micro-controller – PIC12F675
The original plan was to use the PIC for three functions, the first was to make the power LED flash while the RFS was warming up and on solid when locked. The second was to generate a 1 PPS signal from the 10Mhz signal and the third was to generate a PWM signal to control the fan speed. As it turns out the RFS already has a 1 PPS output on Pin 6 of the DB9 connector so there was no need for this. It also transpired that the only fan I had to hand was a three wire fixed speed fan, so I also did not need the PWM signal, this left me with just the power LED to deal with which is what the PIC ended up controlling. Here is the schematic for the PIC and the source code.

#include 

// Using MPLAB-X and the XC8 compiler, both are free from Microchip.com. I am using this on OSX (Mac) and with an ICD3 for programming.

// PIC12F675 Configuration Bit Settings

// CONFIG
#pragma config FOSC = INTRCIO   // Oscillator Selection bits (Internal oscillator: GPIO on GP4/GP5)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-Up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
#pragma config CP = OFF         // Code Protection bit (Program Memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)

// IMPLEMENTATION STRATEGY
//
// PIN ASSIGNMENTS
//   2 = RBS_RDY (GPIO5)
//   5 - POWER_STATUS_LED
//

// We are running the chip at 4Mhz
#define XTAL_FREQ 4000000

#define RBS_RDY GPIObits.GPIO5
#define POWER_LED GPIObits.GPIO2

void main(void)
{
    ADCON0bits.ADON = 0;    // Turn off the ADC
    ANSELbits.ANS = 0;      // Make all inputs digital
    VRCON = 0;              // Turn off the internal voltage reference
    CMCON - 0x7;            // Turn off the comparator

    // Set up our I/O pins
    TRISIObits.TRISIO2 = 0; // Make GPIO2 an output
    TRISIObits.TRISIO5 = 1; // Make GPIO5 an input

    while(1)
    {
        if(RBS_RDY == 0)
        {
            POWER_LED = 1;
        }
        else
        {
            if(POWER_LED == 0)
            {
                POWER_LED = 1;
                _delay(100000);
            }
            else
            {
                POWER_LED = 0;
                _delay(400000);
            }
        }
    }
}

The Video Amp – Extron ADA 6 300MX HV
The video amp unit I used in this hack is made by Extron and the model number (on the front panel) is ADA 6 300MX HV. When I communicated with the seller, he said he had about 30 of them, so if this is useful to you and you want to make your own I would go grab yourself one before they are gone. The basic outline schematic for an input channel is here:

The video op amp chip used in this unit is a CLC409, the data sheet is here.

CLC409 Data Sheet513 downloads

The heat sink I have ordered can be found on e-bay, search for “150x25x60mm Aluminum Heat Sink for LED”.

The switch mode PSU I used can also be found on e-bay, search for “Enclosed Power Supply SMPS,15V,2.4A,36W”

See you next time.

Jul 26

DIY HP/Agilent 53131A-030 3GHz Channel 3 Option Board

As part of the process of upgrading my counter to have a DIY high stability OCXO (Oven Controlled Crystal Oscillator), someone who watched my videos had designed a DIY 3GHz Channel 3 53131A-030 option board. The original from Agilent is very expensive (obviously) and there are clones you can get on e-bay which are a quarter of the price Agilent charge which is why he decided to design his own. His name is Andy and when he saw my video’s he got in touch and offered me one of the PCB’s to which I of course said YES PLEASE :)

Now as it turned out, when Andy constructed his own board he had enough components left over so also constructed and tested one for me which was a really kind thing to do and very unexpected too. In exchange for this I have insisted that I can build him an OCXO board while I am doing mine to return the favour.

Anyways, I thought I would do a video to show the HP/Agilent 53131A-030 DIY 3GHz Cannel 3 Option board getting fitted to my counter. I also spend some time explaining how the pre-scaller circuit works and in basic terms what MMIC’s are and how they work too. I also make an adaption to my previous hard power switch modification to make way for the upcoming DIY OCXO board, and I measure up to get the exact board dimensions and mounting hole positions I need for the OCXO PCB layout.

The entire work and full attribution for the DIY 030 option board/PCB goes to Andy, so Andy – thank you so much for making one of these for me – I really appreciate it.

PLEASE NOTE: I will not put Andy’s Youtube/EEVblog ID here unless he asks me to, and I will not pass on his details without his express permission so please don’t ask – I respect peoples privacy. If Andy does want to share his details in connection with this project then I will gladly put them here.

PLEASE ALSO NOTE: The schematic drawing below is technically incomplete and is meant as an illustrative block diagram. In the real circuit there is also a resistor in series with each inductor at the top of each MMIC to set up the right DC conditions.

See you next time.