2024年6月16日日曜日

spotDL で YT-DLP download error が発生

spotDL で Spotify の音楽をダウンロードすると、
AudioProviderError: YT-DLP download error が発生した。

調査のため、引数を付けてデバックログを出力してみる。
spotdl https://open.spotify.com/track/xxxxx --log-level DEBUG

すると、Spotify の url を指定しているが、実際は同じ楽曲を YouTube Music からダウンロードしていることが判明。 私の環境だと、フィルタリングで youtube へのアクセス制限をしているので接続エラーとなっていた。

2023年6月14日水曜日

Thunderbird アカウントの順番を変更する

Thunderbird でアカウントの順番を変更する方法です。

「Manually sort folders」アドオンでアカウント順を変更することもできるが、Thunderbird バージョン 91 以上にアップデートすることで、アドオンを使わなくても変更することができるようになります。

アカウント設定画面を開いて、移動したいメールアカウントを、このように移動できるようになります。

Thunderbirdの ツール>アカウント設定を開く

2022年8月12日金曜日

HUAWEI P10 lite の fastboot デバイスエラー

HUAWEI P10 lite を Windows10環境に接続して adbコマンドは使えるが、デバイスマネージャの Fastboot2.0 デバイスに△マークが付いて、fastbootのコマンドが反応しない。

これは例えば、PotatoNV のマニュアルに出てくる Huawei Testpoint Drivers のドライバを使うと解消できる。
(ドライバの問題だけなら、インストールしなくてもドライバの更新でこれを指定すればよいだけ。)


PotatoNV(OEM アンロックコードを検出)
https://github.com/mashed-potatoes/PotatoNV

Huawei Testpoint Drivers
https://files.dc-unlocker.com/share.html?v=share/18B15B9D02C945A79B1967234CECB423

2022年8月11日木曜日

VMwareのゲストOSで、USBデバイスが接続できない(グレーアウト)

VMwareのゲストOSを構築したところ、USBデバイスが全く使えそうにない状態になった。

環境

  • VMware Workstation 16 Player
  • ゲストOS:Windows 10 November 2021 Update
  • ホストOS:Windows 10


症状としては

  • [Player] > [取外し可能デバイス] から見ると、全てのUSBデバイスがグレーアウトされる。
    (これは仮想マシン設定の USBコントローラの設定で、「すべての USB 入力デバイスを表示する」にチェックを入れている場合。チェックしていないと、何も表示されないはず。)
  • 仮想マシンのタスクバーで、USBのデバイス アイコンがグレーアウトされる。
  • 新しいUSBデバイスが検出されると「動作を確認」に設定していると、確認ダイアログはあるが、その結果に関わらず接続できない。
  • 諦めてUSBデバイスを取り外した時にダイアログが表示されるが、何のデバイスも表示されていない。


取外し可能なUSBデバイスが、全てグレーアウトされた状態


取り外し可能デバイスに、何のデバイスも表示されていない

調べたところ、これは仮想マシンの設定ファイル(vmx) にある設定が影響していた。
usb.restrictions.defaultAllow = "FALSE"
これをTRUEに変更すると障害は改善した。


All USB devices are greyed out
https://communities.vmware.com/t5/VMware-Workstation-Player/All-USB-devices-are-greyed-out/td-p/2878067

2022年8月9日火曜日

Oracle11gクライアントから12cへの接続エラー

Oracle11gのクライアントから、12cのサーバに接続するための手順です。

1.サーバのファイアウォールで、ポート1521の受信を許可する。

確認方法は、クライアントからコマンドで
tnsping [ip address]
OK と出力されること。

2.クライアントから接続試行、認証できない

接続試行したエラーメッセージ
ORA-28040: 一致する認証プロトコルがありません

これは11gからサーバに接続できる設定になっていない。サーバの sqlnet.ora にパスワード検証機能の設定を追加する。
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11
(SQLNET.ALLOWED_LOGON_VERSION は非推奨、上記の _SERVER を使用する)
(リスナーの再起動は不要)

3.クライアントから接続試行、パスワードが無効

接続試行したエラーメッセージ
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました

パスワードが正しくても、改めてパスワード・バージョンを再構成すると解消した。これは ALLOWED_LOGON_VERSION_SERVER の設定変更後に実施する。

SELECT USERNAME, PASSWORD_VERSIONS FROM DBA_USERS;
現在の PASSWORD_VERSIONS は [11G 12C] となっており、11G が含まれるので問題ないと思われたが、[11G 12C] というのは、上記の ALLOWED_LOGON_VERSION_SERVER のパラメータ値だと 12 に該当し、Oracle11gリリース2(11.2.0.3以上)に該当するので要注意。

ALTER USER user IDENTIFIED BY password;
同じパスワードで再設定すると、[10G 11G 12C] (同じくパラメータ値 11 相当)となり、11gのリモートから認証できるようになった。


SQLNET.ALLOWED_LOGON_VERSION_SERVER リファレンス
https://docs.oracle.com/cd/E96517_01/netrf/parameters-for-the-sqlnet-ora-file.html#GUID-1FA9D26C-4D97-4D1C-AB47-1EC234D924AA

2022年7月31日日曜日

Android 6.0 (Marshmallow) で MACアドレスを永続的に変更

GooglePlayにあるMACアドレス変更アプリ(Wifi Mac Changer など)では、変更できても一時的なものが多い。デバイスの再起動などでMACアドレスは再びデフォルト値に戻ります。

この状態でWiFiに繋げると、「認証に問題」というステータスになって接続できなかった。これはどうやら変更前のMacアドレスを参照したままWiFiの認証している様子。

WiFiの認証過程におけるHandshakeでは、MACアドレスから認証鍵を生成しているので、このままではWiFiに接続できる見込みがない。


Android Debug Bridge(adb) コマンドでやる場合は、
$ adb shell
$ su
# ifconfig wlan0 down
# ifconfig wlan0 hw ether 00:11:22:33:44:55
# ifconfig wlan0 up


結果の確認
$ ip link | tail
22: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 100
    link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

ただしこの変更も一時的なものです。


永続的に更新する場合は、以下
# echo -n "001122334455" > /persist/wifi/.macaddr

ただしこの後、この人みたいな状態になってしまった。
https://androidforums.com/threads/corrupted-wifi-mac-address.919147/
・再設定できない
・後半の3セットは再起動のたびに変動(00:11:22:XX:XX:XX)


これを解消するために試したのがこれ。
https://www.androidiani.com/forum/modding-google-nexus-4/344310-mac-address-cambiato-ad-ogni-riavvio-persistent-partition.html
# chown root:root /persist/wifi
# chmod 755 /persist/wifi
# chown wifi:wifi /persist/wifi/.macaddr
# chmod 660 /persist/wifi/.macaddr
# /system/bin/conn_init

これでMacアドレスを更新できるようになった。

2022年7月17日日曜日

ESP32 Video-Recorder-junior で malloc failed

ログを見ても原因が分かりにくいが、これは PSRAM の Disable を Enabled に変えると解消した。以下エラーログ

cam_hal: cam_dma_config: frame buffer malloc failed
cam_hal: cam_config: cam_dma_config failed
camera: Camera config failed with error 0xffffffff
Camera init failed with error 0xffffffffE gpio: gpio_install_isr_service: GPIO isr service already installed

・設定方法

Arduino IDE>ツール と辿る
PSRAMを選んで、設定をEnabled に変更

ESP32 Video-Recorder-junior を使ってみる

ESP32-CAM で Motion JPEG 方式のビデオを microSD に保存するプログラムです。

ESP32-CAM Video-Recorder-junior

以下、今回のインストール方法

1.GitHub からファイル一式をダウンロード

リポジトリ全体のzipファイルをダウンロードしました。

2.Arduino IDE でスケッチで開く

 今回はv58を使いました。ダウンロードした中のv58フォルダを の ESP32-CAM-Video-Recorder-junior-58x.ino ファイルを Arduino IDE で開きます。
(※事前にフォルダ名を ino ファイルと同じ名前に変更する必要あり。そのまま Arduino IDE で開いたときの案内に従わず、事前にフォルダ名を変更します。)

3.設定

(※設定はデフォルトのままで良いなら、設定は不要です。WiFiにも接続しません。)
v58フォルダにある config.txt ファイルに、ssid、ssid password を設定する。
その config ファイルを microSD に保存する。
microSD を ESP32-CAM に挿す。

4.準備

 もし ESP32 の開発が初回なら、ESP32 のボードマネージャをインストール
使用するボードの情報が取得できなかったので、今回は「ESP32 dev Module」というボードを選択した。(ESP32 のボードマネージャ インストールは、既に資料が多くあるので省略)

 ライブラリマネージャから、「WiFiManager by tablatronix」をインストール
これは WiFi.h 等のコンパイルエラーで気が付く。
ライブラリマネージャだと、「WiFiManager tzapu」で検索すると見つかります。

 シリアルモニタ ボーレートの値を 115200 bps に変更する。
これはシリアルモニタが文字化けするから気が付く。

 PSRAMの設定を Disabled から Enabled に変更する。
これはエラーログからは分かりにくい。ログの詳細

5.マイコンボードに書き込む。

最後に Hard resetting via RTS pin... と出力されるので、ここでリセットボタンを押すのかと思いきや、実は押さなくてもそのまま録画が始まってます。なのでログを見逃さない為にはシリアルモニタを事前に開いておく。

6.ESP32-CAM のリセットボタンを押す

Arduino IDE のシリアルモニタに Filemanager のURL(http://192.168.*.*:8080/)が出力される。ここから録画したファイルをダウンロード可能。
そのまま録画が開始されるので、録画終了まで30分待ちます。

Hyper-V 環境で Arduino IDE の開発

Hyper-V の仮想環境で Arduino IDE を開発してみる。 

しかし、Hyper-V だと、USB接続でマイコンボードに書き込めない。これは Hyper-V の COMポートは仮想シリアル(COM)ポートであって、物理COMポートと繋がっていないため。 

Hyper-V の仮想COMポートは、物理マシンから仮想マシンへの接続用です。Hyper-V マネージャで COM設定いじっても無理でした。ここは別にドライバなど導入して仮想COMポートと物理COMポートを接続する必要があるが、かなり面倒です。 

ただし、VMware の仮想環境だと普通にマイコンボードと接続できます!

2022年2月21日月曜日

[VBA] Range.Value すると「エラー 2015」

Excel VBA でセルがエラー値だと、Range("A1").Value の結果が「エラー 2015」等となる。
このエラー値は、XlCVError 定数と同じであり、例えば、
「エラー 2015」だと、「#VALUE!」のこと。

この内容を変えたい場合は、

  • 「#VALUE!」と表示したいなら、Range("A1").Text
  • ・エラーとなった数式を表示したいなら、Range("A1").Formula
  • ・エラーを判定したいなら、IsError(Range("A1"))


XlCVError 列挙 (Excel)
https://docs.microsoft.com/ja-jp/office/vba/api/excel.xlcverror

2021年8月29日日曜日

MSAccessのパススルークエリをCSV出力すると、3251エラー

MSAccessのVBAで、DoCmd.TransferText にパススルークエリを指定すると、エラーになる。
以前のMSAccessだと出来ていたはずだが。。
DoCmd.TransferText
  TransferType:=AcTextTransferType.acExportDelim,
  TableName:=パススルークエリ名,
  FileName:=出力ファイル.csv
(結果)3251 この操作は、このタイプのオブジェクトには実行できません。
(環境)MSAccess 2013 (32bit)

この対策として、
・パススルークエリをやめて、リンクテーブルを作成する。
・そのリンクテーブルを SELECT するビューを作成する。
・そのビューを、TransferText に指定する。

2021年7月30日金曜日

HUAWEI P20 lite (ANE-LX2J) をテレビで見る

手段について
USB Type-C - HDMI 変換ケーブル非対応
ミラキャスト(Miracast)、クロームキャスト等対応

HDMI 変換ケーブルについて

これは、P20 lite では非対応。
(USB Type-C 2.0 なので、Thunderbolt 3 / DisplayPort over Alternate Mode には非対応)

P20 lite 詳細スペック
https://www.gsmarena.com/huawei_p20_lite-9098.php

ミラキャストについて

これは対応しています。
ただし、動画配信をテレビで見るには、クロームキャストでないと非対応のサービスが多いです。

2021年7月25日日曜日

MS Access ナビゲーション ウィンドウのグループをVBAで変更

Microsoft Access の Navigation Pane にある Group を VBA で変更する方法です。

DoCmd のメソッドで提供されていれば助かるのだが、残念ながら見当たらない。 システムテーブルを直接編集して、CREATE したオブジェクトをグループに追加します。

今回の前提だと、手動で作成したグループに、VBA でオブジェクトを追加します。

使用するシステムテーブルと、その項目

MSysNavPaneGroups で必要な項目
Id Name
一意のId グループ名
(例) 9 グループ1

MSysNavPaneGroupToObjects で必要な項目
GroupID Id Name ObjectID Position
MSysNavPaneGroupsのId 一意のId 任意の項目 MSysObjectsのId 表示順
(例) 9 15 テーブル1 86 1

MSysObjects で必要な項目
Id Name
一意のId 名称1
(例) 86 テーブル1

グループに登録する手順

  1. VIEW 等のオブジェクトを CREATE
  2. MSysObjects から、そのオブジェクトの Id を検索
  3. MSysNavPaneGroups から、追加するグループの Id を検索
  4. MSysNavPaneGroupToObjects から、Idの最大値+1を算出(一意の Id)
    SELECT Max(Id) + 1 FROM MSysNavPaneGroupToObjects
  5. MSysNavPaneGroupToObjects から、Position の連番を算出、開始は1(Position に登録する連番)
    SELECT Nz(Max(Position), 0) + 1 FROM MSysNavPaneGroupToObjects
    WHERE GroupID = [追加するグループの Id]
この結果を元に、MSysNavPaneGroupToObjects にレコードを追加
Flags0(固定値)
GroupID追加するグループの Id
Icon0(固定値)
Id一意の Id
Name追加するオブジェクトの名称(任意)
ObjectID追加するオブジェクトの Id
Position連番

2020年10月10日土曜日

[python] locateCenterOnScreen で TypeError

pyautogui の locateCenterOnScreen では、
アイコンが見つからなかった場合に、Exception が発生しなくなっている。

import pyautogui
x, y = pyautogui.locateCenterOnScreen('icon.png')
pyautogui.click(x, y)


・リファレンス
image が画面にない場合は、ImageNotFoundException
https://pyautogui.readthedocs.io/en/latest/screenshot.html

・実際
Exception は発生せず、None が戻る。
このためサンプルの実装だと、None を x,y(タプル)に代入できず、以下のエラーとなる。
TypeError: cannot unpack non-iterable NoneType object

2020年9月10日木曜日

[VBA] Sgn 関数で内部エラーが発生

VBAの Sgn 関数で配列の未割り当てをチェックしている場合に、内部エラーが発生する。

■ サンプルコード
Dim arr() As String
If Sgn(arr) = 0 Then Debug.Print 0

■ エラーメッセージ
「実行時エラー 51、内部エラーです。」

これは Sgn 関数本来の使い方ではないが、どうやら以前に配列のチェック方法として広まったらしく、MS Office 32bit 環境では そこそこ動いていた。これが Office 64bit だとエラーになる。(※Windows の 64bit のことではない)

言語仕様でない使い方なので、この方法は止めましょう。


2020年7月19日日曜日

[ラズパイ] タスク バーを復旧する

Windows でいうと「タスク バー」になりますが、Raspberry Pi だとデフォルトの「パネル」になります。

パネルを削除していないユーザ、もしくは別の環境から設定ファイルをコピーして再ログインすれば、元に戻ります。
設定ファイルは以下

$HOME/.config/lxpanel/LXDE-pi/panels/panel

2020年6月30日火曜日

[Oracle] VIEWのSQLを出力する

Oracle のビュー定義は、データ・ディクショナリ・ビューを検索することで確認できますが、SQL*Plus で出力する場合は、システム変数の調整が必要です。

SET PAGESIZE 2000(SQLの行数、ヘッダの繰り返しを防ぐ)
SET LINESIZE 500(1行に表示するバイト数、途中での改行を防ぐ)
SET LONGCHUNKSIZE 500(これも1行のバイト数として必要)
SET LONG 10000(SQLのバイト数)

SELECT TEXT FROM USER_VIEWS
WHERE VIEW_NAME = 'view name'

2019年9月8日日曜日

[Python ] Flask + Blueprint で no attribute 'name'

サンプルを参考に Blueprint を始めてみたところ、エラーが発生した。

if blueprint.name in self.blueprints:
AttributeError: module '...' has no attribute 'name'


どうやら、同じエラーに直面した人も多い様子。

https://flask.palletsprojects.com/en/1.1.x/blueprints/

simple_page.py
simple_page = Blueprint('simple_page', __name__)

Flask側
app = Flask(__name__)
app.register_blueprint(simple_page)

このサンプルに限らず、同じ識別子の使いまわしのサンプルが多くて、誤誘導気味です。
register_blueprint() の引数に使っている simple_page は、モジュール名などではなくて、変数名です。

違和感ある設計ですね。。。

2019年8月12日月曜日

yum で https 接続エラー

yum で https のファイルをインストールできない場合の対処について。

IUS Community のリポジトリ追加で問題が発生した。
yum install https://centos7.iuscommunity.org/ius-release.rpm

■ 今回の状況
  1. 環境:CentOS7 64bit (DTI VPS)
  2. エラーメッセージ:
    Cannot open: https://centos7.iuscommunity.org/ius-release.rpm. Skipping.
    Error: Nothing to do

■ 問題を調査したところ、
・wget だと https に接続できる。
・curl だと https に接続できない。

yum の内部では curl を使っているため、https への接続が失敗していた。

■ 今回の対策
シンプルに対処するには、curl をアップデートすると解消する。
yum update curl

2019年7月28日日曜日

Raspberry Pi の USB 電源を ON/OFF

Raspberry Pi 3 Model B+ の USB 電源をオフにする方法です。手順としては、事前にUSBデバイスを解放、次に電源OFF となります。

1.USBデバイス を unbind する。

単なる電源用のUSBデバイス(USBライト等)でなければ、USBデバイスを解放します。

(※もし USB フラッシュドライブ等なら、その前に umount する)
(※解放せずに下記の電源OFF をしても、モノによっては直後に再認識/電源ON となって、電源が落とせないケースあり。例えば、バッテリーを持っている USB デバイス等を USBポート2 に接続すると発生)

USBのポート番号は以下の図(内部的には、LAN ポートも USB 扱い)


今回は、iPod mini を USBポート2 へ接続している。
pi@raspberrypi:~ $ ls /sys/bus/usb/drivers/usb
1-1 1-1.1 1-1.2 bind uevent unbind usb1


この名称 A-B.C の様式は、
  • A:USBバス
  • B:バスのポート
  • C:USBハブのポート

この状態から、Raspberry Pi 3B+ のハードウェアとしては、こうなっている。
・USB の4ポートは、USBハブとして提供されている
・LANポートが USBハブのポート1 として管理されていた

さらに追加でUSBハブ等を挿していると、この名称も長くなる。追跡するにはカーネルのメッセージなら探しやすい。
pi@raspberrypi:~ $ dmesg | grep usb
[11002.555034] usb 1-1.2: Product: iPod mini
[11002.555042] usb 1-1.2: Manufacturer: Apple


iPod mini は 1-1.2 だと判明


lsusb コマンドでも番号を追跡できるが、確認できるポートは「バスのポート」なのか「ハブのポート」なのか分かりにくい。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 05ac:1205 Apple, Inc. iPod Mini 1.Gen/2.Gen
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

pi@raspberrypi:~ $ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
状況的に赤字が「ハブのポート」である様子。lsusb と lsusb -t の関係は Device番号 で紐づけできる。これまでの調査から USB デバイスの正体は、
  • usb1:Linux Foundation 2.0 root hub(コネクタは無い)
  • 1-1:Standard Microsystems Corp. SMC9514 Hub(コネクタは無い)
  • 1-1.1:Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
    (有線LAN コネクタ)
  • 1-1.2:Apple iPod mini(Pi 3B+ の USBポート2 へ接続中)

これで操作するデバイスが確認できたら、以下のコマンドで unbind します。
pi@raspberrypi:~ $ echo 1-1.2 | sudo tee /sys/bus/usb/drivers/usb/unbind
※ファイルの変更権は root のみなので、単にリダイレクトするのは無理です。


2.USB コネクタの電源OFF

USBハブのポート毎に電源管理できる製品でないと、ポート毎に電源OFF できない。Raspberry Pi 3B+ 基盤にあるUSBは、完全にはできないタイプなので、USBの4ポートを一括で電源OFFすることになる。(per-port power switching に対応するスマートHub 製品が必要だが、希少)

利用できるツールを2つ挙げる。
  1. 産総研のお偉いさんが提供しているツール(これはコンパイルするだけなのでコンパクト)。個人用のページのうち、「6. Implementation」にある、C もしくは Python 実装

    もしくは githubサイト(簡単なリファレンスあり、上と同じ C のプログラム)
    https://github.com/codazoda/hub-ctrl.c
  2. 上記の派生ツール(これはmake install が必要)
    https://github.com/mvp/uhubctl

今回は、hub-ctrl.c を使用する。github の説明の通りにコンパイルする。
wget https://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c
sudo apt-get install libusb-dev
gcc -o hub-ctrl hub-ctrl.c -lusb

使用方法は github にもあるが、番号のつけ方が分かりにくい。
hub-ctrl -b [Bus Num] -d [Device Num] -P [Port Num] -p [off:0/on:1]
この Port は Bus のポートでなく、USBハブのポート番号が該当する。
pi@raspberrypi:~ $ lsusb
Bus 001 Device 004: ID 05ac:1205 Apple, Inc. iPod Mini 1.Gen/2.Gen
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

pi@raspberrypi:~ $ lsusb -t
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=smsc95xx, 480M
        |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=usb-storage, 480M
USBハブとして機能しているのが、「(Bus 001 Device 002)Standard Microsystems Corp. SMC9514 Hub」なので、このハブのポートの電源を切る操作となる。
  • Bus Num:1
  • Device Num:2
  • Port Num:1~5(USBハブのポート番号)

LANコネクタの電源OFF(ハブのポート1)
pi@raspberrypi:~ $ sudo ./hub-ctrl -b 1 -d 2 -P 1 -p 0
USBコネクタの電源OFF(ハブのポート2)
pi@raspberrypi:~ $ sudo ./hub-ctrl -b 1 -d 2 -P 2 -p 0

※電源管理が完全ではないので、ポート2の電源を切るとUSB全ポートの電源が切れる。ポート3~5 は個別に電源管理できない。


もしくは USBハブの番号を指定して操作する、ハブの番号は hub-ctrl ツールの中で連番を付けているだけなので、そちらで確認する。
pi@raspberrypi:~ $ ./hub-ctrl
Hub #0 at 001:002
INFO: individual power switching.
WARN: Port indicators are NOT supported.
Hub #1 at 001:001
INFO: ganged switching.
WARN: Port indicators are NOT supported.

この様式は、Hub #[Hub Num] at [Bus Num]:[Device Num] となっているので、今回ではUSBハブとの対応はこのようになっている。
  • Hub #0:(Bus 001 Device 002)Standard Microsystems Corp. SMC9514 Hub
  • Hub #1:(Bus 001 Device 001)Linux Foundation 2.0 root hub

上記より、電源を切るのは Hub #0 になる。(Hub #1 を電源OFFしちゃうと、この後の電源管理が全くできないうえ、このハブの再電源ONすらできず、OS再起動することになる。)

LANコネクタの電源OFF(ハブのポート1)
pi@raspberrypi:~ $ sudo ./hub-ctrl -h 0 -P 1 -p 0
USBコネクタの電源OFF(ハブのポート2)
pi@raspberrypi:~ $ sudo ./hub-ctrl -h 0 -P 2 -p 0

※同じく電源管理が完全ではないので、ポート2の電源を切るとUSB全ポートの電源が切れる。