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

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

## 原因[​](#why-it-happens "原因への直接リンク")

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

## 対処方法[​](#do-this "対処方法への直接リンク")

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 でしか効かないルールでは意味がありません。

## それでも解決しない場合[​](#still-stuck "それでも解決しない場合への直接リンク")

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

[Discord Community](https://wcpos.com/discord)<support@wcpos.com>
