LoginSignup
0
0

More than 5 years have passed since last update.

EL-USB-RTで温度監視しようと思ったらDNSにはまる

Last updated at Posted at 2018-10-07

みんな大好きTEMPer

入手性も良く、安価なUSB温度計Gold TEMPerだが、自分が入手したV1.4では、こんなエラーが出まくる。

$ dmesg
Oct 06 19:35:08 arch kernel: input: RDing TEMPerV1.4 as /devices/pci0000:00/0000:00:15.0/usb1/1-7/1-7:1.0/0003:0C45:7401.002C/input/input35
Oct 06 19:35:08 arch kernel: hid-generic 0003:0C45:7401.002C: input,hidraw1: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-0000:00:15.0-7/input0
Oct 06 19:35:08 arch kernel: hid-generic 0003:0C45:7401.002D: hiddev1,hidraw2: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-0000:00:15.0-7/input1
Oct 06 19:35:08 arch systemd-logind[397]: Watching system buttons on /dev/input/event2 (RDing TEMPerV1.4)

ググった感じではどうしようもなさそうだったのと、ログも汚れるので、湿度も取れるEasyLog EL-USB-RTでやってみよう。
…え、Linux用ソフトのソースが無い?

Linux用ソースと環境

こちらのソースをありがたく使わせていただく。
libhidが必要とのこと。

libhid

だいぶ古く、Ubuntuからも消えている模様。
…が、ArchLinuxにはAURで入れられる模様。

AURによるlibhidのインストール

$ git clone https://aur.archlinux.org/libhid.git
$ cd libhid
$ makepkg -si

…で入るはずが、失敗。
どうも、PKGBUILDにあるsourceの取得に失敗している模様。
原因は後ほど

回避策

PKGBUILDのsourceを書き換える

source=("https://alioth-archive.debian.org/releases/libhid/libhid/$pkgver/$pkgname-$pkgver.tar.gz")

としたら、うまく行った。
置き場所が変わったり、debian.orgのDNSレコードが変わったら、ダメになるかもしれない。

/etc/systemd/resolved.confを書き換える

DNSSEC=falseにする。
他のDNSクエリーのDNSSEC署名検証も、Offになってしまう。

/etc/nsswitch.confを書き換える

hosts:にあるresolvednsにする。
/etc/resolv.confが正しく設定されていることが前提になると思われる。

systemd-resolvedを止める

# systemctl stop systemd-resolved

で止める。
/etc/nsswitch.confのhosts:dnsがあり、/etc/resolv.confが正しく設定されていることが前提になると思われる。

Linux用ソースのビルド

libhidが入ったら、後は簡単。

$ git clone https://github.com/rca/lascar-usb-thermometer.git
$ cd lascar-usb-thermometer
$ make
$ sudo ./usb_termometer
temp: 25.6, hum: 58.5

makepkgが失敗した原因

PKGBUILDsourceにあるdistcache.FreeBSD.orgの名前解決に失敗している。
このホスト名のドメインFreeBSD.orgは署名されているが、ホスト名はCNAMEとなっており、CNAME先のホスト名のドメインgeo.FreeBSD.orgは署名されていない模様。
これをsystemd-resolvedは署名検証失敗としているようだ。

$ drill @127.0.0.53 distcache.FreeBSD.org
;; ->>HEADER<<- opcode: QUERY, rcode: SERVFAIL, id: 30015
:
# journalctl -u systemd-resolved -e
Oct 08 01:28:30 arch systemd-resolved[9360]: DNSSEC validation failed for question distcache.FreeBSD.org IN A: invalid

なお、Google Public DNSは署名検証しているとのことだが、systemd-resolvedとは動きが異なり、エラーにならない。

$ drill @8.8.8.8 distcache.FreeBSD.org
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 9977
:

宿題

  • 他のHIDライブラリへの載せ替え
  • 温度計とは無関係の、CNAMEが別ドメイン時の署名検証のRFC調査

ツッコミ

  • RPi + そのへんのセンサーのほうが安い?
  • 新しいTEMPerは?

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0