読者です 読者をやめる 読者になる 読者になる

Arduino Leonardoでシリアルポートを無効にする

Arduinoを使ってUSBキーボードを作っているところですが、当然ながらPCに対してHIDの他にUSBシリアルとして認識してしまうことに気づきました。対策としてArduinoのcoreを書き換えることで、とりあえずはUSBシリアルを無効にできることをArduino Leonardoで確認することができました。同じMPU(MEGA32U4)を搭載している機種で共通して出来ると思われます。

注意:以下を実行すると以降はUSBを使った書き込みができなくなりますので、USBシリアルを有効にするためにICSP経由でブートローダーが上書き出来ることを確認してから行うことをお勧めします。

USBシリアルを無効にする対策事例がないかなと調べてみますと forum.arduino.cc というそのまま解決出来そうな情報が見つかりましたが、使っていたArduinoの環境とは一致しないようでした。githubの情報を調べてみると、2年前の2015年2月にUSBシリアルを無効に出来ないように変更されているようでした。 github.com

ということで、

  • 現在のソースに上記で加えられた修正を元に戻す
  • USBCore.cppの_updateLUFAbootLoaderにtrueを代入しているあたりも同様にifdefする
  • USBDesc.hのUSB_ENABLED CDC_ENABLEDのdefineをコメントアウトする

ことでUSBシリアルを無効にすることが出来るようになりました。確認したArduinoのバージョンは1.8.2です。
USBシリアルを無効に出来なくした理由は見当たりませんでした。