Categories
Apple Hardware Mobile Technology Toys

Mac OS 10.5/Leopard on the Samsung NC10

Initially I ordered a Dell Inspiron 910/Mini 9, after reading about how easy it was to get Leopard running on these machines. However, after initially quoting 15 days delivery then then, on the 15th day, extended this to 30 days – at which point I cancelled the order.

Instead, due to its looks and frankly astonishing battery life, I ordered a Samsung NC10.

As it turns out, although all Atom netbooks are created equal, some are more equal than others – especially where OS X compatibility is concerned…

Note that I’m doing an install straight of my Leopard retail DVD – more success may be had with one of the various hacked install DVDs which can be downloaded from the usual places. Arr.

The Good (or, What Works)

  • Keyboard & Volume controls (but not brightness controls, the Euro key, or the pipe key which usually lives to the left of “Z”);
  • Trackpad;
  • All three USB ports (although I’ve not yet tried booting without any devices plugged in);
  • Integrated USB webcam;
  • Integrated Bluetooth;
  • Sleep – which unlike some other netbooks, just works perfectly. You do have to hit the power button to resume, though. Safe Sleep/Hibernate doesn’t seem to work right now, but one of the hacked drivers may have disabled it. The machine was in use for several hours yesterday and asleep overnight, but it still showing over 4 hours battery life 🙂
    This post suggests that this is now a solved problem
    I now notice that sleep only seems to work if the machine is running from batteries… if you tell it to sleep on mains power then it will do so, but then wake again a couple of seconds later. Odd.

The Bad (or, What Doesn’t Work out-of-the-box)

  • Intel HDA Audio (but it does with the AppleAzaliaAudio.kext, link below!);
  • Atheros AR424/5007EG 802.11a/b/g MiniPCIe wireless card;
  • Marvell 88e8040 on-board PCIe network interface;
  • Any resolution other than 800×600 on the GMA950 graphics adapter (but it does with the replacement AppleIntelGMA950 kexts);
  • Any way to alter screen brightness;
  • Leopard itself – after installing, the Welcome/Migration Assistant proceeds to where it tries to setup networking, finds no network interfaces, quits and reloads itself (but only if it cannot find any network interfaces – which is the case on a stock NC10 if no USB ethernet adapter is plugged in).

The Ugly (or, What Can Be Made To Work Possibly Involving The Use Of A Large Stick…)

  • I have a Dell 1490 MiniPCIe card arriving from eBay, as these are supported under OS X, which should hopefully largely solve the ethernet and post-install problems (although the on-board ethernet looks to be a bust);
  • The Intel Graphics can be convinced to work through the use of a hacked driver – although this is apparently also possible by changing a PCI Device ID string in the existing driver, which is a solution I’d be happier with. Once the replacement Wifi card arrives, I’ll reinstall and try this method.
  • Another string edit, or if I hook up a CD drive to run a Linux LiveCD and get a dump of the audio codec data, should make it possible to coax sound into working – although it appears that switching between headphones and speakers will still be (at best) a manual process…

So, not completely infeasible but there’s still quite a bit which needs fixing…

More as I run into it.

40 replies on “Mac OS 10.5/Leopard on the Samsung NC10”

Top tip:
The plastic tabs which hold the RAM-access hatch in place actually have inward-pointing lugs – so the easiest way to remove the hatch is actually to press down in its centre so that the entire cover bows outwards, releasing the catches.

 
The standard module is a (unsurprisingly) Samsung-branded 1Gb DDR2 PC-5300 SODIMM running at 333/667MHz with 5-5-5-12 timings. Without overclocking the Atom processor (which only has a front-side bus of 533MHz, it’s worth noting), 667MHz is the maximum speed of the memory bus, so PC-6400 (400/800MHz) memory (as recommended by Crucial – although all speeds are now the same price) doesn’t offer any great advantage. I don’t know whether the Atom’s power-hungry 945GSE chipset can support 4Gb SODIMMs, but at almost £300 the question is most likely largely academic 😉

Update:
According to Intel’s 945GSE specs. page 2Gb is the limit.
Top top:
The bottom case isn’t nearly so hard to remove as I’ve seen suggested on various sites – and I certainly wouldn’t advise shoving a knife into the case! It unclipped itself without any hassles simply by running a thumb-nail around the case, and taking care to release the clips on both edges adjoining each hinge – the inside ones are pretty much the same width as the outer plastic shell making them the hardest to open. For these, approaching from the battery compartment whilst also gently holding the wider outside edge open did the trick.

 
The base itself has what appears to be an aluminium substructure, and the bottom of the keyboard is a steel plate. In all, a solid and well-build netbook!

Although on second inspection, it might just be silver paint. I can’t imagine why you’d paint the inside of the chassis though, so I’m sticking with the thought that there’s some strengthening in there…

Has anyone else noticed that the boot messages of the NC10 02CA BIOS read as follows:

Phoenix TrustedCore(tm) NB
Copyright 1085-2006 Phoenix Technologies Ltd.
All Rights Reserved
FOR EVALUATION ONLY. NOT FOR RESALE.
Build Time: 10/15/08 09:42:18
********************************************************
*       Intel Concord River CRB.SC Reference BIOS      *
*       ======================================         *
*                  VERSION.MAK -r1.19                  *
*               "PHOENIX CSS 2006 SP3B"                *
********************************************************
CPU = 1 Processors Detected
Intel(R) Atom(TM) CPU N270   @ 1.60GHz
2038M Extended RAM Passed
512 KB L2 Cache
System BIOS shadowed
Video BIOS shadowed
Fixed Disk 0: Hitachi HTS543216L9A300
Mouse initialized
System Configuration Data updated

Hmm…

Update:
Samsung have got back to me to say that they’ll be issuing a BIOS update as soon as they can to remove this notice. I wonder if anything else’ll change… or whether there’ll be a way of flashing which doesn’t require Windows?

I’ve now upgraded the NC10 with a 2Gb 667MHz SODIMM from crucial.com, a 30Gb OCZ Core v2 SSD, and a Dell 1395 MiniPCIe WiFi card (which is an 802.11b/g card, rather than the 1490 which is 802.11a/b/g. I’ve never even seen a 802.11a network, and I’m hoping that the b/g-only part will also be more power-efficient).

I checked the stock hard disc speed with CPUID (of CPU-Z fame)’s PC Wizard before I nuked the default Windows install, and the speeds results were just a fraction lower than the stated performance of the SSD. Whether it’s faster or not, it’s certainly shock-proof, silent, and were on-sale at http://www.overclockers.co.uk at the time.

… so it turns out that the hacked AppleIntelGMA950 kext is identical to the Leopard 10.5.5 AppleIntelGMA950 kext with the device IDs changed. Whilst it’s reassuring that this is the case, it doesn’t explain the tearing and corruption… unless there are instances where 0x8680AE27 occur in the compiled code which aren’t part of a device look-up table.

(And indeed, there are 27 instances of the above sequence in the kext binary, and it seems somewhat unlikely that the device ID is referred to directly that many times in a single piece of code… I’d have expected a lookup-table which sets flags and features, and for these values to be used instead everywhere else.)

The other alternative would be that the Apple-specific hardware has a different (non-VGA?) firmware with Apple-specific modifications. If there’s (Open)Darwin source available, this would probably resolve the problem.

Hmm – looking at the Darwin source it appears that the boot-132 AppleIntelPIIXATA kext is outdated (it being from Darwin 9.0, the latest being from Darwin 9.2).

There also appears to be an updated AppleSMBIOS – but I don’t know whether the boot-132 version is modified or stock… it is listed as version 1.0.14, whist the Apple version is simply 32.

Unfortunately the Intel drivers aren’t here.

Hi Stuart,

great work so far you’ve done here by describing your setup process and writing down the solutions for any obstacles found! I’ve received my NC10 a couple of days ago and I am very impressed so far – although it’s still running Windows XP!

I’m planning on replacing the OS with Mac OS X – as soon as I get my hands on a original install DVD. I’ve already gathered some experience with OSX86 on my old laptop and I’m very keen on installing OSX the “vanilla” way like you did.

In preparation for the upcoming install I’ve already replaced my wifi card with a Dell 1490 and I’ve installed 2GB of RAM.

As for the boot132 method, were there any special kexts which you used to make the retail DVD boot? AFAIK there is no way yet to control the brightness, is that a major downside in terms of battery life. I’d really appreciate if you’d share anything that you’ve found annoying so far. I’d like to have my NC10 fully operational, aside from minor things like the MIC not working which can be fixed by an external USB adapter.

Best regards,
Timo

To be honest, the battery life is already amazing under OS X, even with the fairly limited power-management capabilities it offers due to unsupported hardware. As an example, I’ve now been running for almost 4 hours now with the CPU pegged at 100% for the entire period whilst compiling software, and the battery app still estimates there to be 55 minutes of run-time remaining. This little machine really is amazing!

(Although not all netbooks are created equal – there’s a Linux-running Acer Aspire One in the household which only gets about 90 minutes of life from a full charge, but which also discharges its battery even when entirely turned off. The only way to keep charge in the battery is to physically remove it from the machine… most inconvenient)

It’s worth noting that my battery life figures may not be representative – I’ve changed the Atheros WiFi card for a 802.11b/g-only model, and I’ve replaced the internal drive with an OCZ SSD. Either of these may skew the battery life figures on one direction or the other.

It seems strange to say, but the greatest annoyances I currently have (other than an inability to play sound through the headphone socket – although I’m confident that this will soon be fixed) is with the keyboard: whilst it’s physically excellent, Samsung have really made a crazy choice with its implementation.

I’m currently using the default Apple British layout, because even though some keys are swapped and typing an octothorpe (‘#‘) is an absolute pain, it gives me the largest number of working keys. The standard Logitech International English layout still doesn’t recognise the broken-bar/backslash key, but since it moves the functions on the key below the escape key back to the right place, it makes the typing of tilde and other characters impossible.

The Lenovo Ideapad S10 uses the same GMA950 chipset and driver, and yet its brightness-control keys work. This leads me to suspect that the fault is with Samsung for doing something non-standard.

Enhancing my view that Samsung dropped the ball here is the insanely crazy case of the Euro symbol. This should be produced by pressing Fn-F3 – which works under Windows. However, pressing this combination under any other OS shows exactly the madness that Samsung have invoked – pressing Fn-F3 actually generates the distinct keypresses AltGr+Keypad_0, AltGr+Keypad_1, AltGr+Keypad_2, AltGr+Keypad_8 – e.g. the Microsoft-specific method of typing an extended character. Unsurprisingly under any sane OS, this merely generates ‘0128‘ on screen. The frustrating thing about this is that the USB HID specifications define unique sequences for every character – including the Euro symbol. Why Samsung felt the need to write an OS-specific keyboard controller firmware rather than just using the standards is anyones guess 🙁

‘xev’ shows the actual actions taken as a result of pressing Fn+F3 as follows:

KeyPress event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486300, (28,341), root:(710,538),
    state 0x0, keycode 66 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486306, (28,341), root:(710,538),
    state 0x2000, keycode 90 (keysym 0xffb0, KP_0), same_screen YES,
    XLookupString gives 1 bytes: (30) "0"
    XmbLookupString gives 1 bytes: (30) "0"
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486310, (28,341), root:(710,538),
    state 0x2000, keycode 90 (keysym 0xffb0, KP_0), same_screen YES,
    XLookupString gives 1 bytes: (30) "0"
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486316, (28,341), root:(710,538),
    state 0x2000, keycode 91 (keysym 0xffb1, KP_1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XmbLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486321, (28,341), root:(710,538),
    state 0x2000, keycode 91 (keysym 0xffb1, KP_1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486326, (28,341), root:(710,538),
    state 0x2000, keycode 92 (keysym 0xffb2, KP_2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XmbLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486331, (28,341), root:(710,538),
    state 0x2000, keycode 92 (keysym 0xffb2, KP_2), same_screen YES,
    XLookupString gives 1 bytes: (32) "2"
    XmbLookupString gives 1 bytes: (32) "2"
    XFilterEvent returns: False

KeyPress event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486336, (28,341), root:(710,538),
    state 0x2000, keycode 99 (keysym 0xffb8, KP_8), same_screen YES,
    XLookupString gives 1 bytes: (38) "8"
    XmbLookupString gives 1 bytes: (38) "8"
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486341, (28,341), root:(710,538),
    state 0x2000, keycode 99 (keysym 0xffb8, KP_8), same_screen YES,
    XLookupString gives 1 bytes: (38) "8"
    XFilterEvent returns: False

KeyRelease event, serial 30, synthetic NO, window 0x200001,
    root 0x53, subw 0x0, time 4003486347, (28,341), root:(710,538),
    state 0x2000, keycode 66 (keysym 0xff7e, Mode_switch), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Leave a Reply to StuartCancel reply

Exit mobile version