Arduino com chip CH340G em Macs recentes (com OS X El Capitan)

Como instalar no Mac o driver do chip CH340G, que faz a conexão USB-serial em clones do Arduino e outros aparelhos interessantes.

O chip CH340G é funcional e muito barato, o que o faz ser a escolha de chip USB-Serial de muitos clones do Arduino, além de também ser frequente em conversores USB-Serial para diversas funcionalidades, e até em outros projetos que vêm ganhando popularidade, como a placa de desenvolvimento NodeMCU, baseada no ESP8266.

Mas seu driver é relativamente antigo (2013) e não contém assinatura criptográfica do fabricante, o que exige um procedimento adicional para que possa funcionar em Macs com o OS X 10.11 El Capitan instalado.





Atenção:

Leia a versão atualizada deste guia em

CH340G no Mac com macOS High Sierra





O que é o USB-Serial

Um dos elementos básicos de boa parte das placas Arduino, e de placas conversoras variadas, e do NodeMCU, e de muitos outros produtos similares, é o módulo USB-Serial, responsável por traduzir a comunicação USB realizada com o computador para a comunicação mais tradicional (UART ou similar, “TX/RX”) típica dos microcontroladores usados nesses produtos.

Vários modelos de Arduino têm módulos USB-Serial internos baseados em chips USB-Serial diferentes. Há variações até mesmo dentro de um mesmo modelo oficial: o Arduino Uno usou por anos um popular chip FTDI para isso, até que no lançamento da versão 3.0 do Uno ele foi substituído por um microcontrolador auxiliar de uso geral (o ATmega16U2) programado especificamente para isso, por exemplo.

Outros modelos oficiais continuam usando chips FTDI, já foi usado também o ATmega16u8, os Arduinos Leonardo e similares (como o Pro Micro) dispensam um chip específico para isso porque seu microcontrolador principal sabe lidar diretamente com conexões USB, etc.

Quando chegamos aos clones e versões alternativas dos Arduinos, a variação é ainda maior: além de alternar chips usados em outros modelos oficiais de Arduino, a busca por reduzir custos ou oferecer algum recurso adicional leva muitos projetistas a inovar, e aí surgem modelos com chips USB-Serial bastante... sortidos.

O chip CH340G

Um dos modelos de chip USB-Serial que ganharam popularidade em anos recentes foi o CH340G, da chinesa WCH Nanjing QinHeng Electronics, que tem toda a funcionalidade básica exigida dessa tarefa, mas custa bem mais barato (o preço unitário em compras de grande volume pode ser de centavos de real!) do que os chips originais FTDI ou os ATmega16U2.

Embora o hardware do CH340G tenha os atributos e recursos necessários para a tarefa que executa, há anos ele exige um passo específico de instalação que alguns de seus concorrentes dispensam: procurar um driver na Internet, fazer o download e instalar, para que a porta serial correspondente à USB dele passe a ser reconhecida.

Achar o driver é fácil: o driver pode ser obtido no site do fabricante, e eu mantenho uma cópia pessoal para uso próprio, para o caso de o site da WCH sair do ar subitamente.

A instalação no Mac também é simples: basta abrir o zip e clicar no instalador PKG que vem dentro dele. Após alguns minutos, ele informa que foi concluído, e o driver estará instalado.

Em versões antigas do OS X, esse seria o momento de dar um reboot para fazer o kernel do Mac carregar o novo driver, e a porta serial correspondente à USB do CH340G estaria disponível para uso.

Mas, para ampliar a segurança e o controle sobre o que está em execução no sistema, versões mais recentes do OS X passaram a exigir que os drivers carregados pelo kernel tivessem uma assinatura criptográfica identificando o seu autor e garantindo que a versão a ser carregada não foi alterada por algum intermediário.

Exigir assinatura criptográfica dos drivers aumenta o controle sobre a procedência desses elementos essenciais do sistema, mas e se um driver desejado não estiver assinado?

O problema prático é que o driver oficial do CH340G não possui essa assinatura. O usuário interessado em instalá-lo precisa recorrer a um driver assinado por terceiros (ainda não disponível para o OS X El Capitan), ou abrir mão completamente da exigência da assinatura dos drivers.

Até a versão passada, desativar essa exigência era relativamente simples, bastando abrir um Terminal e digitar o comando sudo nvram boot-args="kext-dev-mode=1", que colocava o Mac no modo voltado a drivers em desenvolvimento, para os quais não era exigida assinatura.

Mas o lançamento do OS X 10.11 El Capitan tornou inútil (e desnecessário) o comando acima, ao menos para essa finalidade.

Instalando o CH340G no Mac com o OS X El Capitan

No OS X El Capitan o procedimento é mais longo e complexo, envolvendo pelo menos 2 reboots, sendo um deles para entrar no modo especial de recuperação, no qual é permitido realizar ações indisponíveis durante a execução normal do sistema, inclusive as que potencialmente reduzem sua segurança e estabilidade, como é o caso da que será descrita a seguir, e que você só deve realizar se compreender os riscos e a ausência de garantia.

O procedimento a seguir foi o que eu realizei após instalar o driver do CH340G mencionado acima. Eu usei o sistema normalmente e até dei um reboot entre a instalação do driver e o início do procedimento, então não há razão para se preocupar em fazer imediatamente após. É provável que você possa até mesmo realizar o procedimento antes de instalar o driver, se preferir (mas não testei dessa forma).

O procedimento usa o comando csrutil para desativar o controle de assinaturas de drivers na System Integrity Protection do MacBook, iMac ou Mac mini. Os passos são os seguintes:

  1. Dê um reboot e aguarde atentamente o tom sonoro que indica o começo da inicialização do OS X, pressionando ⌘+R imediatamente, e mantendo pressionada até verificar que o sistema está entrando no modo de recuperação.

  2. No modo de recuperação, ignore as opções apresentadas no centro da tela. Use o menu no alto da tela para selecionar Utilitários e Terminal.
  3. No Terminal, digite o comando csrutil enable --without kext
  4. Observe as mensagens que o comando irá gerar, informando que o seu Mac agora está em uma configuração não suportada, que pode gerar problemas no futuro. Tome nota delas, e ajuste seus procedimentos de segurança e manutenção a elas.

  5. Dê um novo reboot, agora sem teclas especiais. Ao final da nova inicialização, seu driver do CH340G deve estar ativo, e a porta serial correspondente ao chip que estiver plugado no seu Mac deve estar disponível para uso.

Depois que o procedimento estiver completo, já com o Mac rodando no modo normal, você pode verificar se os efeitos do comando continuam em vigor. Basta abrir um Terminal e digitar o comando csrutil status, cuja resposta deve incluir a linha Kext Signing: disabled para indicar que o procedimento surtiu resultado.


Nota 1: para contrastar, menção honrosa para a Silicon Labs pelo driver para Mac do seu chip CP2102 (ou CP210x). O driver do Silabs CP2102 para Mac é fácil de localizar no site oficial (mas mantenho cópia para uso pessoal mesmo assim), atualizado no ano corrente, e a instalação é da forma usual para softwares voltados ao usuário final, só clicar e ir confirmando os defaults, sem nenhum reboot ou comando extra. Parabéns!


Nota 2: menção também honrosa, mas não tanto, para o Prolific PL2303 (página do driver, cópia local para uso pessoal do autor), que menciona o El Capitan na descrição do driver, e inclui um manual completo (e útil) do seu procedimento de instalação, que é simples. Mas o instalador não veio assinado, então é necessário iniciá-lo com o botão direito, e não com 2 cliques, para o OS X saber que estamos certos do que estamos pedindo.

Comentar

Dos leds ao Arduino, ESP8266 e mais

Aprenda eletrônica com as experiências de um geek veterano dos bits e bytes que nunca tinha soldado um led na vida, e resolveu narrar para você o que descobre enquanto explora esse universo – a partir da eletrônica básica, até chegar aos circuitos modernos.

Por Augusto Campos, autor do BR-Linux e Efetividade.net.

Recomendados

Livro recomendado


Artigos já disponíveis

Comunidade Arduino

O BR-Arduino é integrante da comunidade internacional de entusiastas do Arduino, mas não tem relação com os criadores e distribuidores do produto, nem com os detentores das marcas registradas.

Livros recomendados