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_ENABLEDCDC_ENABLEDのdefineをコメントアウトする
ことでUSBシリアルを無効にすることが出来るようになりました。確認したArduinoのバージョンは1.8.2です。
USBシリアルを無効に出来なくした理由は見当たりませんでした。