春雨日記 about me tags

OS無しで入手したPFUのネットワークスキャナをLinuxで復活させた記録

はじめに

RICOHになる前のPFU(になる前の富士通?)から発売された、N7100というネットワークスキャナを入手しました。 タッチパネルを搭載し、スキャン結果をそのままメールやFAXで送信できる事が売りというような、完全にビジネス用途のスキャナであり定価は21万円もしていたようです。

しかしPCを内蔵する情報機器であるため、破棄の際にディスクが撤去され、何もできなくなったような固体が中古市場にて数百円で流通しています。この記事では、それらを活用する為入手困難な元のディスクに一切頼る事なくLinuxベースの据え置きスキャナ端末に仕立て上げてみます。

N7100について

  • スペックなど

    key value
    CPU Atom E3845 (4core, 1.91GHz)
    RAM 2GB DDR3L (4GBまで増設確認済み, ECC不可)
    USB 2*USB2.0
    ネットワーク 1*GbE
    ディスク 2.5インチSATA
    ディスプレイ XGA(1024x768) 60Hz
    タッチパネル 感圧式 2点マルチタッチ
    電源 16V 2.5A
    OS Windows 8 Embedded (ディスクが無いので推測)
  • lspci

    00:00.0 Host bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series SoC Transaction Register (rev 11)
    00:02.0 VGA compatible controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Graphics & Display (rev 11)
    00:13.0 SATA controller: Intel Corporation Atom Processor E3800 Series SATA AHCI Controller (rev 11)
    00:14.0 USB controller: Intel Corporation Atom Processor Z36xxx/Z37xxx, Celeron N2000 Series USB xHCI (rev 11)
    00:1a.0 Encryption controller: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Trusted Execution Engine (rev 11)
    00:1c.0 PCI bridge: Intel Corporation Atom Processor E3800 Series PCI Express Root Port 1 (rev 11)
    00:1f.0 ISA bridge: Intel Corporation Atom Processor Z36xxx/Z37xxx Series Power Control Unit (rev 11)
    00:1f.3 SMBus: Intel Corporation Atom Processor E3800/CE2700 Series SMBus Controller (rev 11)
    01:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
    
  • lsusb

    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 002: ID 04c5:146f Fujitsu, Ltd
    Bus 001 Device 004: ID 0424:4604 Microchip Technology, Inc. (formerly SMSC)
    Bus 001 Device 007: ID 0424:2512 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
    Bus 001 Device 008: ID 0430:0564 Fujitsu Component Limited USB Touch Panel
    Bus 001 Device 009: ID 04fe:0007 PFU, Ltd ENTER KEY
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    

Windowsのインストール

え?と思うかもしれませんが、実はLinuxからEDIDが読めないようで液晶が表示されません。かなり遠回りではありますが、WindowsにIntel Graphicsドライバを入れた上で抽出します。

この手順は、XGA/60Hzの汎用EDIDを適用する事でスキップできるかもしれません。(試してない)

Atom E3800はCeleron J1900と同世代のため、ドライバ類はJ1900の物が適用できます。ASRockのQ1900Mなど、ドライバが入手できる機種からグラフィックドライバをダウンロードします。

レジストリエディタでHKLM\SYSTEM\CurrentControlSet\Enum\DISPLAY\DFI1024\(多分ランダム)\Device Parameters を開き、EDIDをtxtでエクスポートします。

あとは、バイナリエディタにエクスポートしたhexの羅列を張り付けてdfiedid.binで保存すればLinuxで利用可能なEDIDの完成です。(ファイル名は自由)

Arch Linuxインストール

普通にWayland+KDEを入れるだけで画面が映らない以外タッチパネルも含めて完璧に動作するため、本機種特有の点のみ触れます。

  • BIOSセットアップ

    起動時にDeleteを連打で入れます

  • USBブート~インストール

    EFI/BIOSどちらでもUSBメモリから普通にブートしますが、そのままでは画面が出ないためKMS無効(nomodeset)で起動する必要があります。

    Arch Linuxの項目でEを押して編集モードにし、最後にi915.modeset=0を追加してEnter(GrubならCtrl+X)で起動します。

    KMS無効ではsimple-framebufferでインストールが続行できるので、そのまま完了します。

  • ディスプレイのEDID

    EDIDを適用しない状態でKMSを有効にして起動すると、画面は真っ暗ですが次のようにeDP接続の謎FHDディスプレイが認識された状態となります。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    [root@N7100 ~]# dmesg | grep i915
    [    2.972289] i915 0000:00:02.0: vgaarb: deactivate vga console
    [    3.068255] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 1
    [    3.078115] i915 0000:00:02.0: [drm] HDaudio controller not detected, using LPE audio instead
    [    3.301642] fbcon: i915drmfb (fb0) is primary device
    [    3.301655] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
    [    3.777389] Modules linked in: hid_logitech_hidpp(+) hid_multitouch(+) hid_logitech_dj usbhid i915 i2c_algo_bit drm_buddy ttm intel_gtt crc32c_intel xhci_pci drm_display_helper video xhci_pci_renesas cec wmi
    [root@N7100 ~]# ls /dev/fb*
    /dev/fb0
    [root@N7100 ~]# cat /sys/class/drm/card1-eDP-1/status
    connected
    [root@N7100 ~]# cat /sys/class/drm/card1-eDP-1/modes
    1920x1080
    [root@N7100 ~]# cat /sys/class/drm/card1-eDP-1/edid | hexdump -C
    00000000  00 ff ff ff ff ff ff 00  3b 10 11 11 01 00 00 00  |........;.......|
    00000010  2b 15 01 03 80 35 1f 78  ee 9a 80 a3 58 51 9e 25  |+....5.x....XQ.%|
    00000020  0e 50 54 00 00 00 01 01  01 01 01 01 01 01 01 01  |.PT.............|
    00000030  01 01 01 01 01 01 40 38  80 00 71 38 14 40 58 2c  |......@8..q8.@X,|
    00000040  45 00 fe 1e 11 00 00 00  00 00 00 fc 00 4f 70 74  |E............Opt|
    00000050  69 50 6c 65 78 20 39 30  31 30 00 00 00 fc 00 0a  |iPlex 9010......|
    00000060  20 20 20 20 20 20 20 20  20 20 20 20 00 00 00 fc  |            ....|
    00000070  00 0a 20 20 20 20 20 20  20 20 20 20 20 20 00 1d  |..            ..|
    

    何故かOptiPlexのFHDディスプレイのEDIDが出ます。フォールバックのデフォルト値なんでしょうかね?理由は本当にわかってないです。。。

  • EDIDのオーバーライド

    先ほどWindowsで抽出したEDIDを強制します。

    1. dfiedid.bin/usr/lib/firmware/edid/dfiedid.binに配置

    2. initramfsにdfiedid.binを含める

      /etc/mkinitcpio.confFILES

      FILES=(/usr/lib/firmware/edid/dfiedid.bin)
      

      にしてinitramfs再生成

      1
      
      mkinitcpio -p linux-lts
      
    3. cmdlineにdrm.edid_firmware=eDP-1:edid/dfiedid.binを追加

      GRUBでは/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULT

      GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 drm.edid_firmware=eDP-1:edid/dfiedid.bin"
      

      にして設定ファイル生成

      1
      
      grub-mkconfig -o /boot/grub/grub.cfg
      

    *詳細はWikiを参照

    再起動するとディスプレイが映ります。

  • オンスクリーンキーボード

    WaylandとMaliitのおかげでかなり賢い入力ができます。

    1
    
    pacman -S maliit-keyboard
    

    KDE設定→キーボード→仮想キーボードにて有効化

    ただし、現状日本語入力ができない模様。私はファイル名打ち込みぐらいしか使わないので諦めました(泣

  • スキャナドライバ

    libsaneサポートがあるので普通に使えます。

Linuxでのスキャン

色々ソフトウェアがありますが、NAPS2Skanpageがおすすめです。

  • NAPS2

    OCRされたPDFを簡単に作る事ができます。 ネット越しにスキャナをシェアする事もできます。

    タッチで操作しやすい大きなボタンがいい感じですが、CPUのしょぼさ故若干動作が重い気がします。

  • Skanpage

    NAPS2よりだいぶ軽快に動作しますが、OCR済みPDFの出力にも対応しています。

    タッチパネルでの使いやすさは微妙(スワイプでのスクロール不可)

    デフォルトだと馬鹿でかいPDFが生成されるので注意

おわりに

タッチパネルでLinuxデスクトップを使うという試みは過去何度かしたことがありましたが、ここまで完成度が上がっているのかと驚かされました。

特に、キーボードがいい感じに出てくるようになっている点が素晴らしいですね。あと日本語が打てれば…

N7100は据え置きA4書類スキャナとしては丁度いいサイズ感なので、部屋の隅に置きっぱなしにしてファイルサーバに保存するようにすれば完璧だと思います。 大学生・高専生各位如何でしょうか?私は卒業後にDS-6500で泣く泣く大量のスキャンをしてましたが、こういうのを一台置いとけば都度スキャン出来て良い気がします。

TIPS

  • 液晶の輝度

    どうもPWMの周波数が正しくないみたいで、100%以外にすると高速点滅します。 変え方があるのかもしれませんが私は電源管理から輝度変更を無効にしました。

  • 画面が見えない時のデバッグ方法

    SSHを使いましょう。 (気付かずに両端をCH340で繋いだ人より)

    ↑わかりにくいですが、上の富士通タブレット(Q508)にもArch+Wayland+KDEが入っています。 Linuxタブレットが大分実用的になってきたのを感じます。