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 の仮想環境だと普通にマイコンボードと接続できます!