モデムの停電後、CDCデバイスファイル名がロックされました。

モデムの停電後、CDCデバイスファイル名がロックされました。

私はLinuxシステム(ARMベース、Yocto、カーネル4.10で構築)を持っていて、USBインターフェースを使ってモデムに接続しました。モデムはGPIOラインを使用して電源をオンまたはオフにすることができます。

モデムの電源が入ると、CDCデバイスファイルが表示されます。問題なくモデムと通信できます。

時々モデムをリセットする必要があり、デバイスファイルとの通信をすべてオフにし、GPIOを使用して電源を切ってから数秒後に再び電源を入れました。

問題はデバイスファイルが作成されましたが、ファイル名が新しいことです。代わりに /dev/ttyACM5 を想定すると、/dev/ttyACM6 が表示されます。

システムから新しいファイル名を取得できますが、リソースのリークが心配です。

最初は私のプログラムにバグがあると疑っていましたが、数時間テストした後、私のプログラムに問題はないと確信していました。

以下は役に立ついくつかの事実です。

  • CDC デバイスと通信するプログラムが実行中の場合、ファイル名はロックされます。プログラムが終了した後 - デバイスファイル名が解放されます。

  • 私のプログラムが開いてもCDCデバイスと通信しないと、ファイル名はロックされません。 (/dev/ttyACM5 デバイスファイルは、モデムの電源が切れた後に表示されます.)

  • 私のプログラムが開いてCDCデバイスと通信するとき - 停電後、dmesgは「cdc_acm 1-3:1.10:Unable to set dtr / rts」というメッセージを表示し、プログラムが終了するまでファイル名がロックされます。

どんな提案がありますか?

関連情報