web-dev-qa-db-ja.com

Linux上のapcupsdは、USB上のAPC BackUPS Pro900を認識しません

私が見つけたドキュメントから、UPSはLinuxでサポートされておりapcupsdで動作していると報告されています。

悪名高いMicrolinkプロトコルなどの特定の問題を探しましたが、何も見つかりませんでした。

私は 英国の人からのフィードバック このモデルをそれほど異ならないOSバージョン(彼のOpenSuSE 12.1、私の12.3 x86_64)で使用していることを報告していることを発見しました。

USBポートが検出され、lsusbはAPCによって使用されていると報告します。

Bus 002 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

およびlsusb -v -s002:003は、以下を確認および展開します。

Bus 002 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x051d American Power Conversion
  idProduct          0x0002 Uninterruptible Power Supply
  bcdDevice            0.90
  iManufacturer           1 American Power Conversion
  iProduct                2 Back-UPS RS 900G FW:879.L4 .I USB FW:L4
  bNumConfigurations      1
  Configuration Descriptor:
    [...]
    Interface Descriptor:
      [...]
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode           33 US
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength    1134
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval             100
Device Status:     0x0000
  (Bus Powered)

カーネルはこれを認識し、ヒューマンインターフェイスデバイスを適切にセットアップします

crw------- 1 root root 180, 96 Nov  4 16:11 /dev/usb/hiddev0

ですから、私が知る限り、すべてが本来あるべき姿です。

標準構成を/etc/apcupsd/apcupsd.confに入れました(これはUnixで終了し、ASCIIのみで、BOMはありません(念のため))

UPSCABLE usb
UPSTYPE  usb
DEVICE

(また、DEVICEをコメントアウトしようとしましたが、/dev/puppaのデバイスを設定すると、/dev/puppaまたは/var/lib/dev/puppaではなく、/dev/puppa\r\nへのアクセスが試行されます) 。

それでも、apcaccessが私に言っているのは、「ここにUPSはありません、ごめんなさい」です。

VERSION  : 3.14.10 (13 September 2011) suse
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2013-11-04 16:24:22 +0100
MODEL    :
STATUS   : NOBATT
LINEV    : 000.0 Volts
LOADPCT  :   0.0 Percent Load Capacity
BCHARGE  : 000.0 Percent
TIMELEFT :   0.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Low
LOTRANS  : 000.0 Volts
HITRANS  : 000.0 Volts

モデルを認識せず、バッテリーなし(および電圧なし)を報告します。これは、それがMicrolinkの問題ではないこと、またはバッテリーの状態を報告することを確認します。

USBケーブルを外すと、通信が失われたことを示すapcupsdメッセージが表示されます。ケーブルを再接続すると、「通信が復元されました」というブロードキャストも受信します。したがって、apcupsd監視です。

だから、すべてが私にそれが機能するはずだと言っています-それだけは機能しません。どうやら、UPSはapcupsdと通信しません。誰かが私が欠けているものを見つけますか?

2
LSerni

USBポートを変更するブードゥー方式で解決された同様のケース(UPSのモデルは異なりますが、それでもUSB)を見つけました。だからやってみました。 うまくいきました

2つのポート(機能するポートと機能しないポート)のlsusbからの出力は、次の1つの詳細を除いて同じです。

Device Status:     0x0000           <-- old port
  (Bus Powered)

Device Status:     0x0002           <-- new port
  (Bus Powered)
  Remote Wakeup Enabled

これが最初のポートに「リモートウェイクアップ」がないことを意味するかどうかはわかりません。これは、何らかの理由でapcupsd(おそらくサポートするために wakeup-on-power-back ? )、またはこのポートはまったく異なる理由で認識され、その認識により、以前は有効にならなかったリモートウェイクアップが有効になります。

ただし、UPCを古いポートに戻すと、再び機能しなくなりますが、新しいポートでは、予想どおりapcaccessレポートが表示されます。

MODEL    : Back-UPS RS 900G
STATUS   : ONLINE
LINEV    : 231.0 Volts
LOADPCT  :  10.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT : 118.4 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 176.0 Volts
HITRANS  : 294.0 Volts
ALARMDEL : 30 seconds
BATTV    : 27.3 Volts
2
LSerni

私の場合、USBを機能させるには、apcupsd.confで次の変数を設定する必要がありました。

UPSCABLE smart
UPSTYPE usb
DEVICE

あなたがそれを機能させてくれてうれしいです、しかし私はこれらの3つの変数が将来誰か他の人を助けることを望んでいます。 (私はCyber​​Power CP1000AVRLCDaを使用しています)

1
RustyCar