メインコンテンツにスキップ
バージョン: 1.x

Linux での USB プリンターの権限

症状: スキャンするとプリンターは表示されるのに、印刷するとアクセスエラーまたは権限エラーで失敗する。

原因

Linux では、ルールで別途指定しない限り USB デバイスは root のものになるため、自分の権限で動いているアプリからは開けません。カーネル自身のプリンタードライバーが、すでにそのデバイスを確保している場合もあります。

対処方法

  1. プリンターのベンダー ID とプロダクト ID を調べます。

    lsusb

    お使いのプリンターの行を探してください。ID は ID の後ろにある 4 文字の値 2 つで、たとえば 04b8:0e28 のようになっています。

  2. ID を自分のものに置き換えて、ルールファイルを作成します。

    sudo tee /etc/udev/rules.d/99-receipt-printer.rules <<'RULE'
    SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0e28", MODE="0666"
    RULE
  3. ルールを再読み込みして適用し直します。

    sudo udevadm control --reload-rules && sudo udevadm trigger
  4. プリンターを抜いて差し直し、アプリを再起動します。テストページを印刷してください。

アプリは sudo ではなく、通常のユーザーとして実行してください。root でしか効かないルールでは意味がありません。

それでも解決しない場合

トラブル画面でセットアップレポートをコピーを使い、お使いのプリンターの lsusb の行を添えてメッセージに貼り付けてください。