Tuesday, February 26, 2008

A Fix (kinda) For The PowerBook G4 Lower Memory RAM Slot Not Working



An XLR8YourMac reader may have found a solution to some PowerBook G4 models not seeing the lower RAM slot (albeit a very clunky solution):

The lower memory slot on the PowerBook G4 is not fried. It was tested by starting up with a single DIMM in the lower slot. However, it still will not recognize the lower DIMM if there is memory in both the upper & lower slots. This may be different to what others are experiencing, so your mileage may vary.

* THIS INVOLVES THE USAGE OF OPEN FIRMWARE, YOU COULD PERMANENTLY DAMAGE YOUR MACHINE FOLLOWING THIS PRODECURE, SO PERFORM AT YOUR OWN RISK *

[The Powerbook G4] is physically detecting the RAM in Open Firmware ... simply not mapping it to any address space.

Logic dictates that if the ram isn't properly mapped to an address, it will not be visible in Mac OSX. [You can] artificially reduce the size of your system RAM in open firmware by changing these mappings.

1) A note about module sizes. sizes appear to be in hex.
- 10000000 = 256mb
- 20000000 = 512mb
- 40000000 = 1gb
- and so forth...

You need to use the sizes above to map your RAM to relavent address space.

2) Next boot into open firmware. Do this by holding cmd+opt+o+f just after the boot chime of your Mac.

3) This will bring you to the white open firmware prompt "0>".

From here you need to navigate to the memory device tree by typing: 0>dev/memory

4) To display the details about the current memory mappings type:

0>.properties



5) This is an example of how you can map a PowerBook's memory modules to a different address space.

0> 0 encode-int 10000000 encode-int encode+
2> 10000000 encode-int 40000000 encode-int encode+
4> encode+
2> " reg" delete-property
2> " reg" property
0> mac-boot

The first line loads onto the Open Firmware stack - the location of the 1st memory module. In this case it starts at address space 0 and is 10000000 (256mb) in size.

The second [command] loads the 2nd (lower) memory module onto the stack starting at address 10000000 (directly after the first upper module) and is 40000000 (1gb) in size.

The third line encodes the two lines above together on the stack.

The fourth line deletes the current address space mappings (the contents of the " reg" property).

The fifth pops the new memory mappings off the stack and onto the " reg" property.

Finally, the last line, starts the boot process for your Mac.

Check system profiler - both DIMMs should be registering now.

... it is not persistant, when you reboot your machine these mappings will be lost and you will be back to square one.


---------- FIX YOUR THINKING COMMENTARY ----------


XLR8YourMac is a favorite site of mine ... but it is really clunky to navigate or link to articles there ... Mike Breeden (XLR8YourMac's author) also doesn't edit ANY of his posts for grammar or proper punctuation - thus the reason for the repost with a substantial number of corrections.

I've had this happen to a number of my clients on their PowerBook G4s. I doubt I would do this as a solution as a tech, but rather inform the customer of the potential "jigger".

This really should be addressed by Apple now that someone has discovered this issue - a lot of Apple insiders read XLR8YourMac so I imagine now that they see the problem there is the possibility of it being addressed in a firmware update. I'll also monitor XLR8YourMac for a possible "better reader solution".

13 comments:

Anonymous said...

My 15" powerbook G4 1.67GHz also has the same notorious lower ram slot failure. My one's serial number is not included in the range of the repair program , and i've been simply using the upper slot. I recently wanted to upgrade the RAM but unfortunately, there's no single 2GB RAM of pc2700 factor. However, it DOES seem like the ram slot problem may be only a firmware glitch, since my lower ram isn't fried (and works occasionally).

Eventhough, Apple has read this post, and found a solution to it (that is, a firmware upgrade), I believe they are faced with even bigger problem before its release: "What should we do with all the users who have bought a new logic board??"

fixyourthinking said...

This is most likely why Apple will NEVER release a firmware patch ... even though this IS exactly what the issue is.

I'm sorry you're facing the issue. I liked the PowerBook G4 1.67 - the last great Apple laptop to have a PCMCIA/Cardbus slot

Shane Hendricks said...

I've got the same problem as anonymous above--missing RAM slot with an "out of range" serial number. I haven't tried the temporary fix here, but just wanted you all to know that a lawsuit has been filed; the plaintiff has asked for class-action status, so Apple might have been better off to just release the firmware fix...would've been cheaper in the long run.

Tor said...

Wouldn't it be possible for someone with knowledge (perhaps the inventor of the fix) to make the firmware patch? I'd pay for it.

fixyourthinking said...

it would definitely be possible but very illegal to code a firmware patch ... it would also most likely have to exploit an older version of the mac os and therfore make your mac vulnerable.

I really think apple should address this because it is a relatively easy firmware patch

alex said...

Wanted to point out for anyone who happens to stumble upon this page with the above instructions -- you will want to type ".properties" NOT "..properties" to display the memory properties

fixyourthinking said...

Thanks alex ... I fixed a number of errors - there were literally DOZENS that i fixed when i first posted this - as mentioned in the post itself.

Keith said...

Worked nicely (15" 1.25G with 2x 1GB modules 10.4.11) That was until I started opening many apps and the machine froze.

I was keeping an eye on activity monitor and it was once items pushed into the 2nd gig of ram that the freeze happened.

The annoying thing is that the machine has worked with 2x512 modules since 2005, and it was only when I upgraded to 2x1GB this morning that the problem appeared.

Drat - I wanted to avoid buying a new PB for travel, for a while longer :-(

fixyourthinking said...

did you also do all of the following:

Reset everything

1) restart holding down command - option - o - f

2) in open firmware type (with no spaces):

set-defaults

(hit return)

(a new line will appear)

(Type)

reset-nvram

(hit return)

(a new line will appear)

(Type)

reset-all

(you should see a number if things scroll onto the screen and your powerbook will restart

Also ... make sure all of your programs and os are fully updated.

Furthermore ... Try Applejack ... Make sure you install memtest

Keith said...

Thanks - tried all the resets etc

Using this OF info for 2x 1GB

0> dev /memory
0> .properties
0> 0 encode-int 40000000 encode-int encode+
2> 40000000 encode-int 40000000 encode-int encode+
4> encode+
2> " reg" delete-property
2> " reg" property
0> mac-boot

AJ locks up during memtest - looks like stuck with 1 GB...

This reminds me of entering the bootstrap loader code via switches on the front panel of my old PDP 11/05 :-)

Anonymous said...

I know its quite a while since the last post but I have the same problem here and if somebody can help its very much appreciated.
The next is advised but..
0> 0 encode-int 20000000 encode-int encode+
2> 20000000 encode-int 60000000 encode-int encode+
4> encode+
2> " reg" delete-property
2> " reg" property
0> mac-boot

I have 1 Gb in Upper slot and 512 Mb in lower slot so is the above right.
Also if I fill out "reg" in step 5 and 6 that does not work but without it delete-property works but next step 2> property does not and I get a stack underflow in the next line.
I looked up stack underflow and it means nothing in memory?
How do I proceed after 4> encode+
Is it
2> " reg" delete-property
2> " reg" property
or
2> reg delete-property
2> reg property
or something else.
Please help.
Thanks Perry

Anonymous said...

Forget My earlier post,I found out that there need to be a space in between the " and reg,it does it all except after I boot (mac-boot) and logged in it still shows Me only the upper 1GB slot,not the lower one's 512 MB.
I did the following:
0> dev /memory
0> .properties
0> 0 encode-int 20000000 encode-int encode+
2> 20000000 encode-int 60000000 encode-int encode+
4> encode+
2> " reg " delete-property
2> " reg " property
0> mac-boot
There's also a space after reg,does that matter?
It is not showing the 512 MB ram lower slot.
Thanks Perry

Anonymous said...

There is a flaw in this procedure.
I did the procedure, got the system to see My memory in both slots, 1GB and 512 MB and in System Profiler it shows both slots occupied although the speed and type of slot one is unknown.
If I check the memory with NVRAM ram-size it still says its 40000000 which is 1 GB.

After this I used Sudo NVRAM ramsize=60000000 and only then it shows the size as 1.5GB when I check again with NVRAM ram-size.

I still have to see if the System won't crash now, it did before without this last setting after I put the System into sleep and if I remember well also when the System tries to access the second Ram slot when all the memory is taken in the first one.

Cheers Perry