RAM para downclocking no macbook

Quero compartilhar minha experiência em atualizar meu MacBook6.1 A1342 (expandir a memória para 8 GB, instalar o SSD) e solucionar vários problemas associados à instalação do sistema em um novo disco e à luta contra falhas de incompatibilidade de RAM.

A princípio, pode parecer que a atualização do ferro velho é uma tarefa trivial: deve haver muitos artigos na Internet na Internet e há toneladas de peças de reposição baratas no mercado. Mas nem tudo é tão simples na prática. Os problemas começaram na loja na fase de seleção dos componentes

Antecedentes


Por uma quantia simbólica que fui comprada das mãos de um MacBook, este é o meu primeiro laptop desta empresa, inicialmente eu o levei para "me familiarizar" com os produtos da empresa. Imediatamente após a compra, verificou-se que o computador está muito lento para os nossos dias, eu não estava preparado para esse conhecimento. A conselho de um amigo, decidi atualizar. Eu descobri que dentro da unidade SATA de 2,5 polegadas e 2 tiras SO-DIMM 1066MHz DDR3 de 204 pinos, ele suporta oficialmente um máximo de 4Gb em um slot. Uma unidade SSD de 250Gb foi escolhida na loja (não há problema com a escolha: qualquer SATA 2.5 "serve, o intervalo é amplo para qualquer gosto).

Mas com a RAM, nem tudo é tão simples. Oficialmente, este modelo do MacBook suporta a RAM de 1066 MHz, não estava disponível e, por encomenda, uma barra custa cerca de 4000 rublos. Ao mesmo tempo, 4Gb 1600MHz estava disponível a um preço de cerca de 2000 rublos. Foi mais rápido, com base na compatibilidade com versões anteriores. Não começou. Na loja, consegui pegar um módulo de memória com o qual o sistema foi iniciado (AMD R334G1339S1S) e fui para casa feliz, sem esquecer de pedir o segundo. E para que o segundo slot não esteja vazio, temporariamente ativado na barra de 1 GB nativa lá.

Devo dizer que, decepcionado com o lento macOS, instalei o Windows 7 em toda a partição e não fiz backup do sistema - não repita meu erro!

Isso termina a letra e começa a dançar com um pandeiro.

Instale o macOS em uma unidade em branco


Duas pessoas têm um Mac na minha aldeia: a primeira é minha, e a segunda é com aquele bandido de um olho que mantém toda a vila com medo. Dos meios disponíveis: pen drive de 8Gb, um segundo laptop com Windows 7 a bordo, uma linha de Internet dedicada.

Existem muitos artigos na Internet sobre como criar uma unidade flash inicializável do macOS diretamente no macOS. Como criar uma unidade flash USB inicializável com o macOS High Sierra no Windows não é muito grande e todos acabam ficando muito abaixo da saída, depois de várias maneiras de fazê-lo no macOS. Eu já comecei a procurar imagens de pen drives no formato .img .iso .bin e outros, mas infelizmente! Talvez em algum lugar nos rastreadores de torrent bloqueados eles estejam, mas eu não o encontrei. Mas encontrei o utilitário BDU ( Boot Disk Utility ), com o qual você pode baixar os arquivos necessários diretamente da AppStore e gravar na unidade flash USB. O programa é simples, há uma instrução detalhada com fotos no site oficial, por isso não vou parar nesta fase. Só posso dizer que não há necessidade de dividir a unidade flash USB em duas partições e baixar o Clover, basta baixar a imagem RecoveryHD e gravá-la na seção da unidade flash USB.

Em seguida, inicialize a partir da unidade flash (na inicialização, pressione Alt e segure até o menu aparecer). No utilitário de disco, formate o disco (escolhi GUID, APFS). Nós nos conectamos à Internet via WiFi ou fio e iniciamos a instalação. Se tudo estiver bem, o próprio sistema fará o download da Internet e instalará em um computador.

Problemas de compatibilidade com o ferro


A segunda barra veio rapidamente, antes que eu tivesse tempo de aproveitar a nova unidade SSD e 4 + 1 Gb de RAM. Eu instalei a RAM, cerca de 8 GB foram exibidos em About This Mac e comecei a atormentar o sistema com tarefas difíceis. Cerca de 1-2 vezes por dia, o computador começou a reiniciar. Erros como kernel_panic em todos os aplicativos, do Xcode a um simples TextEdit. Chegou ao ponto em que os aplicativos da AppStore pararam de baixar. O primeiro pensamento é que a RAM está quebrada. Eu dirigi o Memtest - está tudo em ordem. A reinstalação da unidade flash criada no BDU termina com falha (erro verificado, erro de soma de verificação e outros erros). Eu tive que ir longe para uma unidade flash de instalação offline criada diretamente no macOS (no Windows isso é difícil de fazer). Mas mesmo isso não salvou.

Notei que a memória opera a uma frequência de 1333MHz. Porque Não há BIOS na papoila, tivemos que diminuir a frequência ativando a barra nativa paralela de 1Gb 1066 MHz. E isso ajudou! O sistema não falha, tudo está funcionando bem na AppStore. Mas e o segundo bar?

Quebrar toda a Internet, encontrou 2 maneiras de resolver o problema:

  1. Uma atualização da EFI de um MacBookPro semelhante, mas não é um fato que ele não irá morrer e, como resultado, escreverá no About This Mac que é Pro;
  2. Altere a frequência de memória máxima permitida no bloco SPD da própria memória em um dos colchetes e o EFI a selecionará automaticamente.

RAM de downclocking MacBook 1333MHz-1066MHz


Eu escolhi a segunda opção, porque o risco de matar uma barra de duas é mais barato para mim. Além disso, possíveis problemas no futuro devido à identificação incorreta da placa pelo sistema. Deixe a EFI atualizar a própria Apple. Para bloqueio, você precisa de um disco Linux ativo (usei o disco de instalação do Ubuntu 16.04.2)

Plano de ação:

1. Remova o despejo da memória SPD EEPROM;
2. Encontre e reduza a frequência do barramento de 1333MHz para 1066MHz;
3. Recontar CRC;
4. Registre os valores recebidos de volta na EEPROM.

Se você tiver US $ 16 extras, poderá comprar o Thaiphoon Burner e fazer todas as operações nele. Caso contrário, bombeie a retidão das mãos. Vamos lá!

Remova o despejo

Inicializamos no Ubuntu, rodamos o terminal e faremos tudo sob a raiz. Instale i2c-tools, carregue drivers:

sudo -I #add-apt-repository universe #apt-get update #apt-get -y install i2c-tools #modprobe eeprom #modprobe i2c-smbus #modprobe i2c-dev #modprobe i2c-nforce2 

Vamos ver quais pneus temos:

 #i2cdetect -l i2c-3 i2c nvkm-0000:02:00.0-aux-0008 I2C adapter i2c-1 i2c nvkm-0000:02:00.0-bus-0002 I2C adapter i2c-8 smbus SMBus nForce2 adapter at 2140 SMBus adapter i2c-6 i2c nvkm-0000:02:00.0-aux-000b I2C adapter i2c-4 i2c nvkm-0000:02:00.0-aux-0009 I2C adapter i2c-2 i2c nvkm-0000:02:00.0-bus-0003 I2C adapter i2c-0 i2c nvkm-0000:02:00.0-bus-0000 I2C adapter i2c-9 smbus SMBus nForce2 adapter at 2100 SMBus adapter i2c-7 i2c 0000:02:00.0 I2C adapter i2c-5 i2c nvkm-0000:02:00.0-aux-000a I2C adapter 

Diga-me nos comentários como encontrar inequivocamente nesta lista onde a RAM trava? Eu já usei a versão gratuita do Thaiphoon Burner, então sei para onde estou indo.

Portanto, no adaptador SMBus nForce2 do 8º barramento, às 2140, trava. Vamos ver o que está dentro:

 #i2cdetect -y 8 0 1 2 3 4 5 6 7 8 9 abcdef 00: -- -- -- -- -- 08 -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: UU UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- 

Aqui UU UU estes são dois dos meus bares, um deles em 1Gb, o outro em 4Gb. Endereços 0x50 e 0x51. Qual é o local onde pode ser determinado pelo despejo de cada um, com base no número de série, por exemplo, ou no ano de fabricação. Eu já observei essas informações com antecedência no Thaiphoon Burner, é por isso que olhamos imediatamente para o dispositivo em 0x51. Vamos despejar a memória dos primeiros 256 bytes - este é o SPD EEPROM:

 #i2cdump -f -r 0x00-0xff -y 8 0x51 b 0 1 2 3 4 5 6 7 8 9 abcdef 0123456789abcdef 00: 92 11 0b 03 03 19 00 09 03 52 01 08 0c 00 3c 00 ??????.??R???.<. 10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.??? 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 05 00 ............???. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 80 01 44 00 00 00 00 00 00 4f 5d .....??D......O] 80: 52 33 33 34 47 31 33 33 39 53 31 53 00 00 00 00 R334G1339S1S.... 90: 00 00 00 00 80 01 00 00 00 00 00 00 00 00 00 00 ....??.......... a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 

Frequência de barramento

Em seguida, fazemos tudo na mente / bloco de notas, mas em nenhum caso não escrevemos na EEPROM!
Transferi cuidadosamente o despejo resultante para um documento de texto. Depois de ler a Norma JEDEC No. 21-C, descobrimos que o parâmetro desejado está no 12º byte (ou seja, com um deslocamento de 0x0C), e a frequência de 1066MHz (de fato, a meia-frequência 533MHz está escrita na documentação) corresponde a 15 (ou seja, 0x0F). Fixamos em um caderno e seguimos em frente.

Soma de verificação CRC

Isso é um pouco mais complicado, o CRC é considerado para os primeiros 126 bytes ou para 117 bytes. Isso é determinado pelo bit alto do primeiro byte. Eu tenho esse valor 0x92, bit alto = 1, que corresponde ao CRC Coverege 0-116. O valor CRC propriamente dito é calculado usando a fórmula polinomial CRC-CCIT de 16 bits 0x1021. Usei a calculadora online CRC, onde tudo está perfeitamente inserido e contado diretamente com o texto. É importante observar que os bytes CRC após a contagem são gravados na ordem inversa na EEPROM nos 126º e 127º bytes. No meu caso, a calculadora on-line contou CRC 0x5047, escreverei 0x47 na EEPROM e depois 0x50.

Escreva para EEPROM

Antes de continuar, vale a pena verificar tudo de novo: leia o JEDEC, avalie os riscos, tente calcular o CRC dos módulos já em funcionamento para aprimorar a habilidade. Em caso de erro, a memória morre! Obviamente, você pode ficar confuso, conectar-se ao programador e restaurar o SPD a partir do backup (você fez?). Então vamos continuar.

No meu caso, preciso escrever (endereço = valor):

0x0C = 0x0F (frequência de 12 bytes)
0x7E = 0x47 (126º byte do CRC.2)
0x7F = 0x50 (127º byte de CRC.1)

 #i2cset -f -y 8 0x51 0x0C 0x0F #i2cset -f -y 8 0x51 0x7E 0x47 #i2cset -f -y 8 0x51 0x7F 0x50 

Verifique se os valores estão escritos:

 #i2cdump -f -r 0x00-0xff -y 8 0x51 b 0 1 2 3 4 5 6 7 8 9 abcdef 0123456789abcdef 00: 92 11 0b 03 03 19 00 09 03 52 01 08 0f 00 3c 00 ??????.??R???.<. 10: 69 78 69 30 69 11 20 89 00 05 3c 3c 00 f0 83 01 ixi0i? ?.?<<.??? 20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 30: 00 00 00 00 00 00 00 00 00 00 00 00 0f 11 05 00 ............???. 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 80 01 44 00 00 00 00 00 00 47 50 .....??D......GP 80: 52 33 33 34 47 31 33 33 39 53 31 53 00 00 00 00 R334G1339S1S.... 90: 00 00 00 00 80 01 00 00 00 00 00 00 00 00 00 00 ....??.......... a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 

Aparentemente, tudo foi gravado corretamente. Apenas no caso, vamos verificar novamente e reiniciar. Se o computador ligar e toda a memória estiver disponível - parabéns! Nós removemos a barra de 1Gb nativa, colocamos a segunda (sem piscar) e verificamos a frequência da memória - 1066MHz.

Se a memória não estiver piscando, significa Proteção contra gravação. Você pode tentar desbloquear o utilitário com o Thaiphoon Burner, soldando um resistor em uma das pernas da memória (o tópico de um artigo separado) ou tentando exibir outra barra.

Espero que este artigo seja útil para alguém. Ele escreveu principalmente para si mesmo, para não procurar novamente todas as informações em lugares diferentes.

Quando materiais de escrita foram usados

Source: https://habr.com/ru/post/pt413099/


All Articles