fc2ブログ

[Windows]Microsoft Wireless Display Adapter

以前から紹介している通り、筆者はマルチディスプレイにハマっている。
今回はMicrosoft Wireless Display Adapterを紹介したい。

■結論
 ・ケース1 PC本体画面があって、そこにもう1画面追加したい方
  PC本体画面に加えて、もう1枚画面を拡張したい方にはおすすめの商品。
  価格は6000円台後半で売ってるが、やや高いと思いながらも、接続の手軽さや、レスポンスの速さ、
  などから個人的には満足。

 ・ケース2 本製品Wireless Displayで接続した画面をメインにしたい方
  これは出来ないはず。
  Windowsにログインしてからでないと、Win + Kキーで接続出来なかった。(何か方法あるのかな?)
  よって、この製品は「Windowsを起動してから」でないと使えないもの。
  起動してログイン画面を無線接続で表示したい、とかは出来なかった。

  試してはいないが、HDMIワイヤレスエクステンダーなどと呼ばれる他の製品なら、メイン画面として使えるのでは?
  Windows OSの機能を使って接続してる訳ではないはずなので。
  そもそも、やたら価格が高い(数万円、有名ブランドは5万円以上)ので、買う気にならなかった。

■補足
 ・本製品の接続方式「ミラキャスト」は1対1接続らしい。(どこかの情報ソースで確認した)
  よって、本製品を複数買って、無線接続で複数ディスプレイと接続、は出来ないと判断。(これがやりたかった)

 ・ミラキャストはWiFiとは別の接続なので、Wireless Display接続した状態でも、WiFi接続は出来た。

■購入した背景

これまでUSB to HDMIアダプタで画面を拡張してきた。
しかし、ノートPCなどにはUSBポート数に限界がある点や、アダプタ同士の相性?がある様で、
モニタ拡張枚数に限界が出てしまう、といった注意点もある。

この製品はWindowsを起動してからでないと使えない(はず)ので、存在は知ってたが、そこまで興味はもってなかった。
PC周辺の機器を有線接続にすると配線が猥雑になるので、無線化も検討したくなったのが本製品を購入した理由だ。

■製品概要、接続方法

製品の紹介としては以下Amazonページを引用したい。
紹介写真を見て頂くと、ディスプレイとの接続方法も掲載されている。

Microsoft Wireless Display Adapter
https://www.amazon.co.jp/%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88-%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%E3%82%A2%E3%83%80%E3%83%97%E3%82%BF%E3%83%BC-V2%E3%80%90Wi-Fi%E4%B8%8D%E8%A6%81%E3%80%91%E3%83%9F%E3%83%A9%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC-%E6%90%AD%E8%BC%89%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E5%AF%BE%E5%BF%9C-P3Q-00009/dp/B01BG9NG5E

接続はシンプルで、まずは当たり前だが、製品のHDMIコネクタをディスプレイに接続する。
あとはUSBコネクタを電源供給ポートに接続するだけ。
USBはディスプレイ本体のポートでも良いらしいが、うちの環境では接続しにくかったので、
単にUSB電源アダプタで電源を供給する事にした。

■使い方

本製品をディスプレイにHDMI接続して、USBから電源供給すると、ディスプレイ画面には「Win + Kを押せ」とアナウンスが表示される。
さらにPC側を起動して、Windowsにログインする。
そこからWindowsキーを押しながらKキーを押すと、画面右下に「キャスト」というウィンドウが表示され、
さらにそこに、接続可能なデバイスとして、本製品の名前が表示されるはずだ。
そこをクリックして接続すると、数秒でディスプレイに画面が表示された。

■さらに使い方

ここまででディスプレイが2枚になったので、それを複製するか、拡張するかは使い方次第。
具体的には、デスクトップ画面(何もアプリを開いてない状態の画面)で右クリックから、ディスプレイ設定を選択。
そこで画面が2枚表示されているはずだが、その右横に、複製か、拡張か、の設定が出来る。

■今どんなPC構成?

これまではUSB to HDMIアダプタで、ノートPC本体 + ディスプレイ5枚、を構築していた。
そのうち1枚を今回のWireless Display Adapterに代えた。

ノートPC Lenovo x280
  HDMIポート > HDMIケーブル > ディスプレイ
  USB Type C > USB Type C to HDMIケーブル > ディスプレイ
  無線接続(ミラキャストと呼ぶ?) > Microsoft Wireless Display Adapter > ディスプレイ
  USBポート > USB to HDMI変換アダプタ(玄人志向) > ディスプレイ
  USBポート > USB to HDMI変換アダプタ(ABLEWE) > ディスプレイ

USB to HDMI変換アダプタの数を減らせた事で、本当にこれが理由か分からないが、
接続が一気に安定した。
これまではあるディスプレイだけ、マウスをそこに移動すると画面が消える不具合?が発生していたり、
そもそもUSB to HDMI変換アダプタ経由の接続が一部表示されなかったり、があった。
各社のドライバソフトウェアの問題かと思うが、どれがどう原因なのかは解明出来てない。
スポンサーサイト



[PC]EP805Aトラブルシュート

ある日突然無線LANが接続出来なくなったので、復旧までの手順メモ。

■症状
 ある日突然プリンタの無線LANがつながらなくなった。

■結論
 設定 > ネットワーク設定 > ネットワーク診断 > 印刷
 これで「MACアドレスフィルタリング設定の確認」がNGと診断された。
 診断結果を印刷した後、待っていただけで、無線LAN接続になぜか成功したようで印刷が始まった。(理由不明)

■詳細
 ・固定IPなので、そのIPへpingするも応答無し。
  このIPはDHCP範囲外なので、DHCPクライアントがそのIPを奪った、とかは無し。
 ・プリンタ本体の無線LAN設定(SSID、方式、固定IP、GW、DNS、サブネット、など)に問題は見当たらない。
 ・無線LAN親機でのMACアドレスフィルタリングに本プリンタのMACは以前から登録済。
 ・プリンタ本体を再起動しても変わらず。
 ・プリンタ無線LAN設定をOFF->ONしても変わらず。
 ・最後に、ネットワーク診断して、それを印刷したら、MACアドレスフィルタリングでNGくらっている事が分かった。
  その印刷物を読んでいる最中に、ストックされていた印刷命令が突然始まった。
  なぜかは分からない。

[LM32]ビルドバッチ

内容は以下。

1.micosystem.exeでBuild allした時のコピー(sw.elfが生成される)
2.micosystem.exeでSoftware Deploymentlした時のコピー(命令RAMとデータRAMの.memが生成される)
3.srec生成
4.elfをobjdump
5.memからmifへ変換(自作rubyプログラム)
6.rubyだと16進数のアドレスの0埋めが出来ずに空白埋めになるので、0へ変換
7.mifをシミュレーションフォルダへコピー


#!/bin/bash

\rm sw.elf
\rm *.mif
\rm *.srec
\rm *.bin.*
\rm *.objdump.txt
\rm *.o
\rm *.d

src_name=LEDTest

#GCC_OPT="-D__RELOCATE_EXCEPTION_TABLE__"
GCC_OPT=""

LM32ELFBIN=/cygdrive/c/lscc/diamond/3.12/micosystem/gtools/lm32/lm32-elf/bin
LM32BIN=/cygdrive/c/lscc/diamond/3.12/micosystem/gtools/lm32/bin
PJ_DIR=/cygdrive/c/hoge/DE2-115/micosystem/mico32/soc
LATTICE_UTIL_DIR=/cygdrive/c/lscc/diamond/3.12/micosystem/utilities
RUBYBIN="/cygdrive/c/hoge/ruby"

echo "INFO : build ------------------------------------------------------------------------";
cd ../mico32/Debug

$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../DDInit.c -o ../../Debug/Debug/DDInit.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../DDInit.c >> ../../Debug/Debug/DDInit.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../DDStructs.c -o ../../Debug/Debug/DDStructs.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../DDStructs.c >> ../../Debug/Debug/DDStructs.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LCD.c -o ../../Debug/Debug/LCD.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../LCD.c >> ../../Debug/Debug/LCD.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LatticeMico32.c -o ../../Debug/Debug/LatticeMico32.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../LatticeMico32.c >> ../../Debug/Debug/LatticeMico32.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LatticeMico32DbgModule.S -o ../../Debug/Debug/LatticeMico32DbgModule.o
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LatticeMico32Uart.c -o ../../Debug/Debug/LatticeMico32Uart.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../LatticeMico32Uart.c >> ../../Debug/Debug/LatticeMico32Uart.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LatticeMicoUtils.S -o ../../Debug/Debug/LatticeMicoUtils.o
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../LookupServices.c -o ../../Debug/Debug/LookupServices.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../LookupServices.c >> ../../Debug/Debug/LookupServices.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoExit.S -o ../../Debug/Debug/MicoExit.o
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileClose.c -o ../../Debug/Debug/MicoFileClose.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileClose.c >> ../../Debug/Debug/MicoFileClose.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileDevices.c -o ../../Debug/Debug/MicoFileDevices.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileDevices.c >> ../../Debug/Debug/MicoFileDevices.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileIsAtty.c -o ../../Debug/Debug/MicoFileIsAtty.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileIsAtty.c >> ../../Debug/Debug/MicoFileIsAtty.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileOpen.c -o ../../Debug/Debug/MicoFileOpen.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileOpen.c >> ../../Debug/Debug/MicoFileOpen.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileRead.c -o ../../Debug/Debug/MicoFileRead.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileRead.c >> ../../Debug/Debug/MicoFileRead.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileSeek.c -o ../../Debug/Debug/MicoFileSeek.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileSeek.c >> ../../Debug/Debug/MicoFileSeek.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileStat.c -o ../../Debug/Debug/MicoFileStat.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileStat.c >> ../../Debug/Debug/MicoFileStat.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoFileWrite.c -o ../../Debug/Debug/MicoFileWrite.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoFileWrite.c >> ../../Debug/Debug/MicoFileWrite.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoGPIO.c -o ../../Debug/Debug/MicoGPIO.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoGPIO.c >> ../../Debug/Debug/MicoGPIO.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoGPIOService.c -o ../../Debug/Debug/MicoGPIOService.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoGPIOService.c >> ../../Debug/Debug/MicoGPIOService.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoInterrupts.c -o ../../Debug/Debug/MicoInterrupts.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoInterrupts.c >> ../../Debug/Debug/MicoInterrupts.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoSbrk.c -o ../../Debug/Debug/MicoSbrk.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoSbrk.c >> ../../Debug/Debug/MicoSbrk.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoSleepHelper.S -o ../../Debug/Debug/MicoSleepHelper.o
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoStdStreams.c -o ../../Debug/Debug/MicoStdStreams.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoStdStreams.c >> ../../Debug/Debug/MicoStdStreams.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoUart.c -o ../../Debug/Debug/MicoUart.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoUart.c >> ../../Debug/Debug/MicoUart.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoUartService.c -o ../../Debug/Debug/MicoUartService.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoUartService.c >> ../../Debug/Debug/MicoUartService.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../MicoUtils.c -o ../../Debug/Debug/MicoUtils.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../MicoUtils.c >> ../../Debug/Debug/MicoUtils.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. ../printf_shrink.c -o ../../Debug/Debug/printf_shrink.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I. -MM -MG -P -w ../printf_shrink.c >> ../../Debug/Debug/printf_shrink.d

cd ../../Debug

rm -f Debug/../LEDTest.o
rm -f Debug/../lm32_func.o
rm -f Debug/crt0ram.o

touch force_clean_archive_objs

$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled $GCC_OPT -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I./../mico32 ../LEDTest.c -o Debug/../LEDTest.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled $GCC_OPT -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I./../mico32 -MM -MG -P -w ../LEDTest.c >> Debug/../LEDTest.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled $GCC_OPT -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I./../mico32 ../lm32_func.c -o Debug/../lm32_func.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled $GCC_OPT -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I./../mico32 -MM -MG -P -w ../lm32_func.c >> Debug/../lm32_func.d
$LM32BIN/lm32-elf-gcc -c -mbarrel-shift-enabled $GCC_OPT -ffunction-sections -O0 -g2 -Wall -D__lm32__ -I./../mico32 ./../mico32/crt0ram.S -o Debug/crt0ram.o
$LM32BIN/lm32-elf-gcc -mbarrel-shift-enabled -T ../mico32/Debug/linker.ld -osw.elf Debug/../LEDTest.o Debug/../lm32_func.o Debug/crt0ram.o ./Debug/libmico32.a -lm -lsmallc -lgcc ./Debug/libmico32.a -lnosys -Wl,--gc-sections
$LM32BIN/lm32-elf-size sw.elf



echo "INFO : objcopy elf to bin (boot, text) ----------------------------------"; $LM32BIN/lm32-elf-objcopy -j .boot -j .text -O binary $PJ_DIR/sw/Debug/sw.elf $PJ_DIR/sw/Debug/Application.bin.boot_text
echo "INFO : objcopy bin to mem (boot, text) ----------------------------------"; $LATTICE_UTIL_DIR/bin_to_verilog --h --EB --width 4 $PJ_DIR/sw/Debug/Application.bin.boot_text $PJ_DIR/sw/Debug/hoge_Instruction_IM.mem
echo "INFO : objcopy elf to bin (rodata, bss) ----------------------------------"; $LM32BIN/lm32-elf-objcopy -j .rodata -j .bss -O binary $PJ_DIR/sw/Debug/sw.elf $PJ_DIR/sw/Debug/Application.bin.rodata_bss
echo "INFO : objcopy bin to mem (rodata, bss) ----------------------------------"; $LATTICE_UTIL_DIR/bin_to_verilog --h --EB --width 4 $PJ_DIR/sw/Debug/Application.bin.rodata_bss $PJ_DIR/sw/Debug/hoge_Data_IM.mem


echo "INFO : convert Debug/sw.elf to $src_name.srec ----------------------------"; $LM32BIN/lm32-elf-objcopy -O srec sw.elf $src_name.srec
echo "INFO : objdump sw.elf -----------------------------------------"; $LM32ELFBIN/objdump.exe -d sw.elf > sw.elf.objdump.txt

\rm data_ram_data.mif
\rm inst_ram_data.mif

#echo "INFO : convert mem to mif (inst) --------------------"; ruby $RUBYBIN/mem2mif_v01.rb hoge_Instruction_IM.mem inst_ram_data.mif
echo "INFO : convert mem to mif (inst) --------------------"; ruby mem2mif_v01.rb hoge_Instruction_IM.mem inst_ram_data.mif
#echo "INFO : convert mem to mif (data) --------------------"; ruby $RUBYBIN/mem2mif_v01.rb hoge_Data_IM.mem data_ram_data.mif
echo "INFO : convert mem to mif (data) --------------------"; ruby mem2mif_v01.rb hoge_Data_IM.mem data_ram_data.mif

echo "INFO : padding 000 (inst) ---------------------------"; sed -i 's/ /000/g' inst_ram_data.mif
echo "INFO : padding 000 (data) ---------------------------"; sed -i 's/ /000/g' data_ram_data.mif

echo "INFO : padding 00 (inst) ---------------------------"; sed -i 's/ /00/g' inst_ram_data.mif
echo "INFO : padding 00 (data) ---------------------------"; sed -i 's/ /00/g' data_ram_data.mif

echo "INFO : padding 0 (inst) ---------------------------"; sed -i 's/00 /000/g' inst_ram_data.mif
echo "INFO : padding 0 (data) ---------------------------"; sed -i 's/00 /000/g' data_ram_data.mif

echo "INFO : cp inst_ram_data.mif ../../ ------------------"; \cp inst_ram_data.mif ../../
echo "INFO : cp data_ram_data.mif ../../ ------------------"; \cp data_ram_data.mif ../../


[Quartus]コンパイルバッチ

これでFPGAへのプログラムまで自動で行ける。
Quartus Prime v21.1で確認済。
USB Blasterがどんな名前で認識されているか、一度はProgrammer画面で確認してね。

#!/bin/bash

PJNAME=DE2_115
echo "INFO : quartus_map -------------------------------------------"; quartus_map --read_settings_files=on --write_settings_files=off $PJNAME -c $PJNAME
echo "INFO : quartus_fit -------------------------------------------"; quartus_fit --read_settings_files=on --write_settings_files=off $PJNAME -c $PJNAME
echo "INFO : quartus_asm -------------------------------------------"; quartus_asm --read_settings_files=on --write_settings_files=off $PJNAME -c $PJNAME
echo "INFO : quartus_sta -------------------------------------------"; quartus_sta $PJNAME -c $PJNAME
echo "INFO : jtagconfig -------------------------------------------"; jtagconfig -n
#echo "INFO : quartus_pgm -------------------------------------------"; quartus_pgm --cable="USB-Blaster [3-4]" $PJNAME.cdf
echo "INFO : quartus_pgm -------------------------------------------"; quartus_pgm --cable="USB-Blaster [USB-0]" $PJNAME.cdf

[Quartus]Timing Analyzerコマンドライン

https://www.intel.com/content/dam/support/jp/ja/programmable/support-resources/bulk-container/pdfs/literature/hb/qts/qts-qii53018-j.pdf


久しぶりにTerasic VEEKをいじってる。
コマンドラインでバッチ処理したいので、メモ。

対話(インタラクティブ)モードで起動
$ quartus_sta.exe -s

STAコマンドをまとめたファイルがあったらこれで読み込める。
$ tcl> source sta.tcl

sta.tcl例

project_open -force "C:/xxx/DE2_115.qpf" -revision DE2_115
create_timing_netlist -model slow
read_sdc
check_timing
update_timing_netlist
create_timing_summary -setup -panel_name "summary_Setup" -multi_corner
create_timing_summary -hold -panel_name "summary_hold" -multi_corner
create_timing_summary -recovery -panel_name "summary_recovery" -multi_corner
create_timing_summary -removal -panel_name "summary_removal" -multi_corner
create_timing_summary -mpw -panel_name "summary_min_pulse_width" -multi_corner
report_clock_fmax_summary -panel_name "fmax" -multi_corner
report_clock_transfers -panel_name "clock_transfer"
report_ucp -panel_name "unconst_path"
check_timing

# ここから先はSTAやってなくて、回路を解析するために使うコマンド文法メモ
get_ports CLOCK_50
get_nets mico32:ether1|lm32_top:LM32|lm32_cpu:cpu|valid_m
get_cells CLOCK_25



create_clock -period 20.000ns [get_ports CLOCK_50]
create_clock -period 20.000ns [get_ports CLOCK2_50]
create_clock -period 20.000ns [get_ports CLOCK3_50]

#**************************************************************
# Create Generated Clock
#**************************************************************
derive_pll_clocks
# for CLOCK_25
derive_clocks -period 40



derive_clocks -period 40の所は内部レジスタ(Flip Flop)に自動的にクロックを設定するコマンド。
本来なら、外部クロックポートCLOCK_50からの伝搬遅延を考慮して、以下のように書くべきだろう。
create_clock -period 40.000ns [get_pins CLOCK_25|clock_pin_name]
INTEL FPGAのレジスタってピン名が何になるのか調べて無いが。

ケーキ値上がりエグい

けっこうお気に入りのメロンショートケーキ。。。一年ぶりに買ってみたら、小さいショートなのに900円近くに値上がりしてた。
何年か前までは550円くらいだったのに・・・
味も落ちた気がするし、今度は別の店を探すか・・・

[Quartus]Programmer > Hardware SetupでUSB-Blasterが表示されない(解決)

■症状
・Quartus Prime v21.1とQuartus v11.0sp1の2つをインストールしてる。
・デバイスマネージャではUSB-Blasterが認識されてる。エラーも無い。
・Quartus Prime v21.1を起動して、ProgrammerでHardware Setupすると、USB-Blasterが表示されず、選択出来ない。

■原因
Win - R > ファイル名を指定して実行 > compmgmt.msc > サービスとアプリケーション > サービス > Altera JTAG Server > プロパティ

実行ファイルのパス = ここがv11.0sp1へのパスになってた


■解決方法

https://www.macnica.co.jp/business/semiconductor/articles/intel/133605/

・管理者権限でコマンドプロンプトを開く
・/c/altera/11.0sp1/quartus/bin64 > jtagserver.exe --stop
・/c/altera/11.0sp1/quartus/bin64 > jtagserver.exe --uninstall
・/c/intelFPGA_lite/21.1/quartus/bin64 > jtagserver.exe --install
・Win - R > ファイル名を指定して実行 > compmgmt.msc > サービスとアプリケーション > サービス > Altera JTAG Server > プロパティ
実行ファイルのパス = v21.1のパスに変わった。
C:\intelFPGA_lite\21.1\quartus\bin64\jtagserver.exe

これでQuartus Primeを起動して、ProgrammerでHardware Setupすると、USB-Blasterが表示されて、選択も可能になった。
また、FPGAへのコンフィグデータ焼き込みも成功した。

[PC]ROCK Pi 4C+

https://gadgetrip.jp/2022/05/radxa_rockpi_4c_plus/

昨年末に注文したラズパイ4が一向に送られて来ないので、この存在を知って購入してしまった。
ALLNET CHINA経由で購入してWiFi付きで64USDくらい。
2個と送料で145USDくらい。
為替がえぐくて、結局19000円くらいになってしまった。

まだ試してないけど、M.2 PCIe SSDが搭載可能な珍しいシングルボードコンピュータ(SBC)だなと。

[PC]MPOW M7 ANC片耳しか聞こえない時の対処法

https://mpow.jp/products/m7-anc

そんな時は公式の以下を見よう。
何回か試したら直った。

■よくあるご質問

・片方のイヤホンのランプが白色に高速点滅していてペアリングできない

インジケーターが白色に高速点滅している場合は、イヤホンが左右同期モードになっている状態を表しています。片方のイヤホンが白色に高速点滅している際には、もう片方のイヤホンのタッチセンサー部を3回タップし、同じく左右同期モードにしてください。両方とも白色に高速点滅し左右同期モードになりましたら左右のイヤホンを近づけると左右の同期が完了し、通常通り使用が可能になります。
(※イヤホンのタッチセンサーを3回短くタップすると、一瞬時間を置いてすぐにインジケーターが白色高速点滅し、左右同期モードとなります。)

[Quartus]LiteXを試す(成功)

ホスト: Ubuntu 20.04.04 (マシン名a320)
FPGAボード: Terassic VEEK-MT (ベースボードはDE2-115)
以下のような手順でbitstreamはなんか生成出来たみたい。
しかしLinuxまで搭載しようとすると、linux-on-litex-vexriscvのページを参考にしてるが、VEEKは対応してないみたい。
対応してるDE0-nanoでどう出来るか調査中。(DE0-nanoってどうやってUARTターミナルを表示するんだっけ?)

apt -y update
apt -y upgrade
apt -y install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl llvm libncursesw5-dev tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libopencv-dev git
reboot

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
cd /home/bob/.pyenv
git checkout v2.2.5
sed -Ei -e '/^([^#]|$)/ {a \
export PYENV_ROOT="$HOME/.pyenv"
a \
export PATH="$PYENV_ROOT/bin:$PATH"
a \
' -e ':a' -e '$!{n;ba};}' ~/.profile

echo 'eval "$(pyenv init --path)"' >>~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
exec $SHELL -l
pyenv -v
pyenv install 3.8.13
pyenv versions
pyenv shell 3.8.13
python -V
mkdir -p /home/bob/litex
cd /home/bob/litex
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
chmod +x litex_setup.py
./litex_setup.py --init --install --user --config=standard
pip3 install meson
pip3 install ninja
./litex_setup.py --gcc=riscv
wget https://cdrdv2.intel.com/v1/dl/getContent/684219/684234?filename=Quartus-lite-21.1.0.842-linux.tar
tar xvf Quartus-lite-21.1.0.842-linux.tar
./setup.sh
vi /home/bob/.bashrc
chown -R bob intelFPGA_lite
chgrp -R bob intelFPGA_lite
chmod 777 /root
git clone https://github.com/litex-hub/litex-boards

git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
./configure --prefix=$HOME/RISCV --enable-multilib
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
./configure --prefix=/opt/riscv
sudo make
vi /home/bob/.bashrc > export PATH="/opt/riscv/bin:$PATH"
source /home/bob/.bashrc

vi /root/.bashrc > export PYENV_ROOT="/home/bob/.pyenv"
source /root/.bashrc

python3 -m litex_boards.targets.terasic_de0nano --build --load
# power on VEEK, then connect VEEK to PC via USB cable
pyenv versions
pyenv shell 3.8.13
python -V
quartus > USB Blasterを認識させる。そのままウィンドウを開いたままにした
python3 -m litex_boards.targets.terasic_de2_115 --build --load

興味があるURLメモ

後で見るかも、と思ってスマホのブラウザ画面がわんさか増えてしまう。。。
代わりに、こちらにメモしておく。

価格.com レビュー X570で仮想サーバー立てるならコレ
https://review.kakaku.com/review/K0001172567/ReviewCD=1267348/

さくらインターネット 無料SSL(Let’sEncrypt)を設定したい
https://help.sakura.ad.jp/rs/2153/

【Kubernetes入門】永続化ボリュームPersistentVolumeClaimを利用する
https://www.mtioutput.com/entry/kube-volume-handson

Qiita Raspberry Pi 4 でおうちKubernetesを作ろう(Raspbian Buster Lite対応版)
https://qiita.com/kentarok/items/6e818c2e6cf66c55f19a

Doorkeeper シェル芸勉強会
https://usptomo.doorkeeper.jp/

Tomy Kamada
https://tomyk.jp/

ミクシィの21新卒技術研修の資料と動画を公開します!
https://mixi-developers.mixi.co.jp/21-technical-training-a0bcdbf9bca0


秀和幡ヶ谷レジデンスの悪い噂 /お金のための自主管理は失敗しやすい
https://taclover.com/%E7%A7%80%E5%92%8C%E5%B9%A1%E3%83%B6%E8%B0%B7%E3%83%AC%E3%82%B8%E3%83%87%E3%83%B3%E3%82%B9%E3%81%A8%E8%87%AA%E4%B8%BB%E7%AE%A1%E7%90%86%E3%81%AE%E8%A9%B1-%E3%81%8A%E9%87%91%E3%81%AE%E3%81%9F%E3%82%81/

あっきぃ日記 Raspberry Piの消費電力をカリカリにチューニングする
https://akkiesoft.hatenablog.jp/entry/20211017/1634405422

Qiita 組み込みLinuxデバイスドライバの作り方
https://qiita.com/iwatake2222/items/1fdd2e0faaaa868a2db2

富田研究室 Lustreファイルシステムの導入
http://www.comphys.las.shibaura-it.ac.jp/install_lustre2_1_3

HPCソリューションズ Lustreファイルシステムの概要と導入手順について
https://www.hpc-sol.co.jp/support/tech/lustre_howto_install/

Chaperone Lustre
https://web.chaperone.jp/w/index.php?Lustre

atmarkit 【 xfsrestore 】コマンド――xfsdumpで作ったバックアップを復元する
https://atmarkit.itmedia.co.jp/ait/articles/1804/27/news037.html

オルクドール
https://www.orquedor.jp/

Zenn プログラムがメモリをどう使うかを理解する
https://zenn.dev/rita0222/articles/e6ff75245d79b5

GIGAZINE 数百種のシングルボードコンピューターからスペック指定でサクッと検索できる「Single Board Computer Database」
https://gigazine.net/news/20181023-single-board-computer-database/
https://www.board-db.org/

Qiita GPUなしではじめるディープラーニング
https://qiita.com/namakemono/items/75ec9549da6fc602b470

おうちで「おうち Kubernetes インターン」を実施しました
https://developers.cyberagent.co.jp/blog/archives/27443/

Linuxでネットワークの監視を行えるモニタリングコマンド20選
https://orebibou.com/ja/home/201409/20140902_001/

Deterministic Zeroing TRIMについて
https://marosama.blogspot.com/2012/12/deterministic-zeroing-trim.html

Fun Multicores DE10-Nano編: Linux Desktop "Xfce" 環境構築 ー Terasic社提供 Reference Design を使って、Yocto (Linux Root File System Build) とLinux Kernel Build
https://blog.fun-multicores.tokyo/

リザンシーパークホテル Rissan Sea Park Hotel
https://www.rizzan.co.jp/

情報畑でつかまえて OpenStack Neutronが作るNWの実体を追ってみよう
https://www.ntt-tx.co.jp/column/tec/180702/

OpenStack環境でBlockストレージを増設する - 基礎知識編
https://www.alpha.co.jp/blog/202008_02

OpenStack環境でBlockストレージを増設する - 増設作業編
https://www.alpha.co.jp/blog/202010_02

これで全てが分かる。In Win「IW-CE685/300P」徹底検証
https://www.gdm.or.jp/review/2014/0713/76591

ものものテック 学習コンテンツ
https://monomonotech.jp/main/#/

Qiita 無料で登録不要、オフラインでも使える機械学習ツールを作ってみた
https://qiita.com/bioelectron2/items/afb148f6efa9050526a1

Qiita Vagrant+VirtualBoxでApache CloudStackを動かす
https://qiita.com/atsaki/items/4776515b86a145d35c21

Qiita Cephクラスタを構築してみた(CentOS7)
https://qiita.com/moukuto/items/7fb63f3a550925e954f6

Qiita Kubernetes on Raspberry Pi 4B(ARM64)でCephを導入しました
https://qiita.com/Y-Shikase/items/c6fffbbd11a3d039b380

atmarkit Ceph/RADOSの実装から動作の仕組みを理解する
https://atmarkit.itmedia.co.jp/ait/articles/1411/04/news164.html

note.nkmk.me TensorFlow, KerasでVGG16などの学習済みモデルを利用
https://note.nkmk.me/python-tensorflow-keras-applications-pretrained-models/

CentOS7でLVMのスナップショットを用いたオンラインバックアップをとる
https://blog.cosnomi.com/posts/258/

[PC]電力モニタ(ワットモニタ)

SANWA SUPPLY: TAP-TST8 > 計測側プラグ抜いて、料金とCO2ボタン長押し(3秒)  取扱説明書より
ELPA: EC-05EB > ボタン3つ長押し(3秒)  https://anonelife.com/life/electronics/wattmeter-ec05eb/#i-7
REVEX: ET-30D > 積算使用時間(or積算電気料金)を表示させて、+と-を長押し(3秒)  取扱説明書より

[OpenStack]Ubuntuへmicrostackインストール(成功)

OpenStackをいじりたくてインストールを試したが、devstack(CentOSとUbuntu)、Packstack(CentOS)の手順で進むも途中でエラー。
最終的に成功したのがmicrostackだった。
しかも、ちょー簡単。

host: a320i
os: Ubuntu 20.04.4 LTS
kernel: 5.4.0-105-generic

手順は以下に従って進むだけ。

https://ubuntu.com/openstack/install

今回はAll In One構成が希望だから、「Single-node deployment」タブを選択。
後は手順に従いコマンドうつだけ。rootでなくて、一般ユーザからsudoコマンドを使う。

sudo snap install microstack --beta
snap list microstack
sudo /snap/bin/microstack init --auto --control

ここまででインストールは完了。
上記のようにmicrostackへのパスが通ってなかったので、bashrcへ追記して以降チュートリアルへ進む。

microstack.openstack image list
microstack.openstack flavor list
microstack launch cirros -n test
ssh -i /home/bob/snap/microstack/common/.ssh/id_microstack cirros@10.xx.yy.zzz

これで生成したインスタンスへsshでログイン出来た。
次はweb GUIログイン用のパスワードを確認する。

sudo snap get microstack config.credentials.keystone-password

次は別のPCからweb GUIへログインするが、10.xx.yy.zzz宛パケットが、microstackをインストールしたa320i PCへ届くように事前にデフォルトゲートウェイを変更しておく。
ブラウザでhttps://10.xx.yy.1:443へアクセスすると、推奨されないがアクセス出来た。
ユーザ名はadmin、パスワードは上記で入手した文字列でログイン出来た。

次はmicrostackの手順が学べるチュートリアルを探そう。

[PC]ZYT SATA 4port PCIeカード

Linuxで、専用ドライバ不要のSATA増設PCIeカードを探してる。
以下を購入してみた。

https://www.amazon.co.jp/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%83%9C%E3%83%BC%E3%83%89-SATA%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E4%BB%98%E3%81%8D-Server2003-FreeNAS%E3%81%AA%E3%81%A9%E5%AF%BE%E5%BF%9C-ZYT-SA3014/dp/B07TD57RGZ/ref=pd_sbs_1/358-4304578-6518939?pd_rd_w=AfFex&pf_rd_p=ca6ccf00-9cde-4773-ae9e-625b2d7cc586&pf_rd_r=YGA1CB4H2MN01AA5V8XY&pd_rd_r=1450c7ed-7bd1-4d6a-8ce5-2614c7f319ab&pd_rd_wg=EIizG&pd_rd_i=B07TD57RGZ&psc=1

結果的には、以下。

Ubuntu DT 20.04: OK。ドライバ不要で認識OK。
Ubuntu Server 21.04: NG。HDDは認識したが、fdiskとかアクセスするとI/Oエラーでフリーズする。
CentOS 7.9: NG。同上。

Ubuntu 20.04なら使えたし、4ポートで4千円しないし、まあ、アリかな。

[RaspberryPi]kubernetesクラスタ構成

kubernetes勉強中。

■機材

・Raspberry Pi4 Model B
  4GB x 2台 (Master + Worker)
  2GB x 2台 (Worker)
・LOTW ラズパイ用積層ケース 4段用 x 2個
・Kuman 7インチ タッチディスプレイ x 1個
・TP LINKスイッチングハブ 8ポート x 1個
・UGREEN 急速充電器 65W PD 充電器 4ポート USB-C x 1個
・USBケーブル x 4個

■構成

[PC]HUION Kamvas 13購入

XP PEN Artist 12が故障したみたいなので、こちらも評判の良かったHUION Kamvas 13を買ってみた。

https://www.huion.com/jp/pen_display/Kamvas/kamvas-13.html

XP PENが動かなかったPCでも動作したし、やはりXP PENは接続ケーブルの故障だったのだろうか・・・・
(液晶タブレット自体が故障したら、No Signalとか表示もされないと思うし。。。)

何回使っても動作不良は今の所起きてないし、満足。
春節セールで25000円くらいだった。

[PC]XP-PEN Artist 12トラブルシューティング

いつの間にか液タブがWindowsで認識されなくなった。
Windows 11用ドライバも入れた。
再起動して、接続すると、ペン操作は効くが、マルチモニタとして認識してくれない。
なぜだ・・・?

XP-PENに相談したが、解決せず。
残念ながらWarrantyも切れているので、買い直して下さい、と。
確かに保証期間は過ぎているが、5回くらいしか使ってないのに、なぜか故障扱い・・・
ただ棚に置いていただけなのに・・・
最近の買い物では無かった耐久性の弱さ。
違うモデルであっても、このメーカーから2度目買う事は無いだろう。。


個人的には単にドライバがうまく動かないだけだと思ってるけど。
認識しないとか、接続出来ないって口コミも結構見るので。

[CentOS]LVMコマンド

fdisk /dev/sdb
 ※ 4つパーティション作成

pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3
pvcreate /dev/sdb4

vgcreate vgdata /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
lvcreate -l 90%VG -n lv0 vgdata

mkfs -t xfs /dev/vgdata/lv0
mkdir -p /mnt/lv_data
mount /dev/vgdata/lv0 /mnt/lv_data/

https://qiita.com/TsutomuNakamura/items/a68377952d07397db448

lvcreate -s -l 100%FREE -n snap /dev/vgdata/lv0

mount -o ro /dev/lvm-test/snap /mnt/snap
ここでエラー発生。確認中。

[PC]自動修復を準備しています、の症状

KODLIXというミニPCを以前買って、確かWindowsアップデートか何かで失敗したのか、起動するとすぐに「自動修復の準備をしています」と出て、進まない。
ほんとはLinuxに乗り換えたいんだけど、起動時のBIOSメニューへ行くキーの画面すら出ないので、どうやってLinuxをインストールするのか。。。。?
自動修復の準備しています画面でずっと待つとブルースクリーン。
そして、再起動された後は、Windows起動時の丸いわっかぐるぐるが続く・・・

電源長押しで強制終了。
次の起動時はKODLIXロゴが出る前からDELを連打。
するとWindowsぐるぐるにはならず、KODLIXロゴが出た画面で固まった・・・

[PC]PAV-HMS220初期設定

LustreファイルシステムがCentOS7でないといろいろ面倒みたいなので、検証用PCを探していた所、
この製品を発見。

PAV-HMS220
https://www.princeton.co.jp/product/storage/pavhms420220.html


以前からフロントベイのモデルで、かつLinuxがインストール可能なNASキットを探していたが、TerraMasterのものでも3万円くらいするので、財布が痛いなぁと思っていた所、このモデルは生産終了品だが、市場では2万円以下で売ってた。
Amazonサイトでもよく分からない販売元からは買わない主義だったが、2万円以下で売ってると、まあリスクを取ってでも実験したいなと。

到着してからのレビューを少し。

■開封
・箱は汚れている感じだったが、開封してみると、新品であろう感じになってる。
  ※ たまに「これ絶対一度使ったよね?」っていう梱包あるよね。電源アダプタのねじねじがやたら汚かったり。

■配線
・電源ケーブル、HDMIケーブル、LANケーブル、USBキーボードを接続。
・HDD無い状態で電源ONすると、画面がうつり、ビープ音が時々鳴り、System Readyまで進んだ。

■HDD取り付け
・HDDトレイはツールレスで非常に良い!
  ※ TerraMasterが好きだけど、トレイはねじなので、面倒。
    PRINCETONのこのモデルは、ロックするプレートが左右に外れて、HDDを入れた後、再度ロックプレートをかちっと戻せば良いだけ。
・ツールレスなので最高なのだが、ロックプレートのはまりが難しく、何度も位置をずらしてやらないとカチッとはまらない。工作精度の悪さか?
・HDDトレイを筐体へ差し込むが、どうもHDDがある場合はわずかにトレイが膨らんで、筐体に奥まで入れるのに力がいる。工作精度の悪さなのか?
・さらに、HDDトレイを差し込んで、筐体基板のSATAコネクタへすんなり接続出来ず、あるHDDモデルでは、何度もやり直して、やっとすっぽり入った。工作精度の悪さなのか?
  ※ HDDのサイズ、ねじ位置、SATAコネクタサイズなどは規格で決まっているし、有名メーカーなので、HDD側の工作精度が原因ではないと思うのだが・・・

■CentOS7インストール
・前面のUSBコネクタへUSBインストーラを接続。
・電源ON > BIOS画面へ > USBからブートするように設定変更。
  ※ ディスクの種類で、MMCがあるので、PRINCETON純正OSはMMC(eMMC)にインストールされているようなので、今回は取り付けたHDD 2台のうち片方にCentOS7をインストール。そして、もう片方jは検証用HDDを自由に抜き差しできるようにしたい。
・USBブートで起動すると、CentOS7インストーラが起動した。ここまでは正常。
  > ただし、最初の画面WELCOME TO CENTOS7に進み言語の選択をしようとすると、すぐに以下エラーメッセージが。

An unknown error has occurred
This program has encounterd an unknown error. You may report the bug below or quit the program.



CPUが対応してないのでは?と思うが、その他HDDが死んでいるのか、デバッグ中。

その後CentOS8インストールで試してみたら、インストール設定が先に進み、今最後のインストール書き込み中。
CentOS7インストーラの場合はダメみたい。
7.x系最新のCentOS7.9 2009でも同じエラーだった。

あきらめて正常にインストール出来たCentOS8で使う事にする。

CentOS8入れてから確認したら、CPUはCeleron N3060 1.6GHzだね。
PassMarkスコアも663と最低レベル。(ここ最近CPUスコアをリスト化したPC群の中で最低スコア)
CentOS7が入れば使い道はあったが・・・2台目は無いな。

好きなLinuxがインストール出来て、フロントベイタイプ、のNASキットで1万円台、は他に無いだけに、実に惜しい。

[PC]PAV-HMS220初期設定

LustreファイルシステムがCentOS7でないといろいろ面倒みたいなので、検証用PCを探していた所、
この製品を発見。

PAV-HMS220
https://www.princeton.co.jp/product/storage/pavhms420220.html


以前からフロントベイのモデルで、かつLinuxがインストール可能なNASキットを探していたが、TerraMasterのものでも3万円くらいするので、財布が痛いなぁと思っていた所、このモデルは生産終了品だが、市場では2万円以下で売ってた。
Amazonサイトでもよく分からない販売元からは買わない主義だったが、2万円以下で売ってると、まあリスクを取ってでも実験したいなと。

到着してからのレビューを少し。

■開封
・箱は汚れている感じだったが、開封してみると、新品であろう感じになってる。
  ※ たまに「これ絶対一度使ったよね?」っていう梱包あるよね。電源アダプタのねじねじがやたら汚かったり。

■配線
・電源ケーブル、HDMIケーブル、LANケーブル、USBキーボードを接続。
・HDD無い状態で電源ONすると、画面がうつり、ビープ音が時々鳴り、System Readyまで進んだ。

■HDD取り付け
・HDDトレイはツールレスで非常に良い!
  ※ TerraMasterが好きだけど、トレイはねじなので、面倒。
    PRINCETONのこのモデルは、ロックするプレートが左右に外れて、HDDを入れた後、再度ロックプレートをかちっと戻せば良いだけ。
・ツールレスなので最高なのだが、ロックプレートのはまりが難しく、何度も位置をずらしてやらないとカチッとはまらない。工作精度の悪さか?
・HDDトレイを筐体へ差し込むが、どうもHDDがある場合はわずかにトレイが膨らんで、筐体に奥まで入れるのに力がいる。工作精度の悪さなのか?
・さらに、HDDトレイを差し込んで、筐体基板のSATAコネクタへすんなり接続出来ず、あるHDDモデルでは、何度もやり直して、やっとすっぽり入った。工作精度の悪さなのか?
  ※ HDDのサイズ、ねじ位置、SATAコネクタサイズなどは規格で決まっているし、有名メーカーなので、HDD側の工作精度が原因ではないと思うのだが・・・

■CentOS7インストール
・前面のUSBコネクタへUSBインストーラを接続。
・電源ON > BIOS画面へ > USBからブートするように設定変更。
  ※ ディスクの種類で、MMCがあるので、PRINCETON純正OSはMMC(eMMC)にインストールされているようなので、今回は取り付けたHDD 2台のうち片方にCentOS7をインストール。そして、もう片方jは検証用HDDを自由に抜き差しできるようにしたい。
・USBブートで起動すると、CentOS7インストーラが起動した。ここまでは正常。
  > ただし、最初の画面WELCOME TO CENTOS7に進み言語の選択をしようとすると、すぐに以下エラーメッセージが。

An unknown error has occurred
This program has encounterd an unknown error. You may report the bug below or quit the program.



CPUが対応してないのでは?と思うが、その他HDDが死んでいるのか、デバッグ中。

[Windows]ショートカットキー

Win + V ・・・ コピー履歴表示
Ctrl + Shift + T ・・・ 消したタブ復元
Ctrl +Shift +Esc ・・・ タスクマネージャ起動
Win +Alt +PrintScreen ・・・ スクリーンショット保存  ※ 保存先: C:\Users\xxx\Videos\Captures
Win + ← or → ・・・ 画面半分に

動画キャプチャしたい画面で Win +G > 左上の録画ボタンを押す ・・・ 選択画面の動画キャプチャ  ※ 保存先: C:\Users\xxx\Videos\Captures

[Raspberry Pi]USB給電

PoE HATに続き、ラズパイの電源ケーブルを無くしたいという欲望から、これも試してみた。

Ankerとかが有名なUSB給電気、充電器を使うと、1本の電源コンセントで複数ラズパイへの給電をしたい。
買ったのは以下。

UGREEN 65W Wall Charger (3C1A)
https://www.amazon.co.jp/UGREEN-65W%E3%80%90GaN-4%E3%83%9D%E3%83%BC%E3%83%88USB-USB-C%E6%80%A5%E9%80%9F%E5%85%85%E9%9B%BB%E5%99%A8-%E3%81%AA%E3%81%A9%E6%A7%98%E3%80%85%E3%81%AA%E6%A9%9F%E5%99%A8%E4%BA%92%E6%8F%9B%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8A/dp/B088FHJLR1


USB Type-CへRaspberry Pi4 Model Bの4GB x2台、2GB x 1台を接続してみた。
どのポートにどれを、を調べると面倒なので意識してないが、とりあえず3台動いた。

[Raspberry Pi]Pi4のPoE HATが動いた

検証用にいくつかラズパイ持ってるが、いいかげん電源ケーブルがうざい。
kubernetesのクラスタとかいろいろやりたいが、台数増えると、LANケーブル、キーボード&マウスケーブル、HDMIケーブル、電源ケーブルのセットが増えるのがきつい。

HDMIケーブルはssh接続にして省略出来るが、電源ケーブルも省略するために、PoE HATなるものを買ってみた。

いろいろ販売されているが、以下を決めてに次の商品を買ってみた。

 ・IEEE 802.3af、3at両方対応
 ・ラズパイ4対応
 ・値段が安い(2599円)
 ・販売元(GeeekPi)って聞いた事あり、ある程度安心
 ・GPIOピンヘッダが隠れない(全て使えるか未確認)
 ・高さがそれほど高くなくて、使ってる積層式ケース4段(ブランド:LOTW)で使えそう



https://www.amazon.co.jp/GeeekPi-Plus%E3%81%AB%E9%81%A9%E3%81%97%E3%81%9FRaspberry-Pi%E5%86%B7%E5%8D%B4%E3%83%95%E3%82%A1%E3%83%B330x30x7mm%E3%81%A7IEEE-802-3af%E3%81%BE%E3%81%9F%E3%81%AF802-3at-PoE%E6%A8%99%E6%BA%96%E3%82%92%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88/dp/B082LR3DDN?th=1

梱包を開けてみたら、クーラーファンのネジが1個取れてるけど・・・
これで新品なのか?
GeeekPiという販売元だったけど、商品の箱は、www.52pi.comってなってる。
https://www.52pi.com/

けどホームページ見に行っても、この青いPoE HAT見つからない・・・


とりあえず、以下構成で接続してみた。

・PoEスイッチ: TP-LINK T1500G-10MPS
・Raspberry Pi4 model B 2GBメモリ
・カテゴリ5e(6?)LANケーブル



無事動くね。特に問題は無いみたい。
以前AXIS監視カメラ用に購入したPoEスイッチが役に立った。
3at対応のPoE HATが2600円。
クラスタ構成用にあと3つ買うと合計1万円超えるのか・・・もう少し安いのないかな?
後日8GB版でUSB HDDを接続した場合とか試したい。

追記
調子にのって、別のやつも買ってみた。

DSLRKIT Power Over Ethernet PoE HAT IEEE802.3at DC 5V 4A PoE+ for Raspberry Pi 4B 3B+ 3B Plus
https://www.amazon.co.jp/DSLRKIT-Ethernet-HAT-IEEE802-3at-Raspberry/dp/B07JQ2Z8NG/ref=pd_sbs_3/357-7165319-3188863?pd_rd_w=iREor&pf_rd_p=52ecde5f-22cd-44a8-9320-89e5f2926931&pf_rd_r=XHE9PZPTZ3GMXDJZPDWF&pd_rd_r=be762d1f-0fe9-456f-b1b0-be0bcbc94a3b&pd_rd_wg=4odpD&pd_rd_i=B07JQ2Z8NG&psc=1

1690円なので価格は良し。
GPIOピンヘッダも外に出せるので問題なし。
以下構成で動作する事を確認。3at対応だから問題ないね。
しかし、残念ながら、使ってる積層ケースだと高さオーバーで積層出来ない。
惜しい! 高過ぎる以外は全てクリアかな。

・PoEスイッチ: TP-LINK T1500G-10MPS
・Raspberry Pi4 model B 8GBメモリ
・カテゴリ5e LANケーブル


[Windows]11へのアップグレード時壊れた? > 回復

Windows 11にしてみるか、と思ってアップグレードを進めてみた。
50%くらい進んだあたりまで見たが、そのまま放置して後で見たら、
電源が消えている。
電源ボタンを押しても動かない。充電ケーブルに接続してしばらくした後も動かない。

アップグレード中にPC壊れた?
それともWindows 11へのアップグレードは何か問題ある??

(2021.12.3)
少し前に直った。
①流れは、周辺機器と電源外して、数日間放置。(バッテリーがなくなるくらい??)
②電源接続して、少しだけ充電。
③電源ボタン押す。
これで起動したけど、何も反応無かったら、①でもっと放置してからやる。
たまにこういう事あるよね。

Lenovoなんかもう買うかーと思ったが、まあ、次回は長期保証に入ろうかな。
10年くらい前に買ったx230がまだ動いてるのに、2年くらい前に買ったx280が死んでしまうのに怒りがこみ上げたが、無事意識がお戻りになって良かった。

[Ubuntu]Zone Minderカメラ設定

Host: Ubuntu 18.04.6
ZoneMinder: v1.34.26


D-Link DCS-931L

General Name DCS-931L
General Server NONE
General Source Type Remote
General Function Mocord
General Enabled checked
General Linked Monitors blank
General Group blank
General Analysis FPS blank
General Maximum FPS blank
General Alarm Maximum FPS blank
General Reference Image Blend 6.25%(indoor)
General Alarm Reference Image Blend 6.25%
General Triggers None available
Source Protocol HTTP
Source Method Simple
Source Host Name admin:pass@192.168.xxx.xxx
Source Port 63634
Source Path /video.cgi
Source Target colorspace 24 bit color
Source Capture Resolution 640
Source Reserve Aspect Ratio non checked
Source Orientation Normal
Source Deinterlacing Disabled
Source Use RTSP Response Media URL non checked

 ※ スマホアプリでユーザアカウント設定出来なかったのでWeb GUIのログインアカウントでアクセス。


TP-Link Tapo C100

General Name Tapo_C100
General Server NONE
General Source Type Remote
General Function Mocord
General Enabled checked
General Linked Monitors blank
General Group blank
General Analysis FPS blank
General Maximum FPS blank
General Alarm Maximum FPS blank
General Reference Image Blend 6.25%(indoor)
General Alarm Reference Image Blend 6.25%
General Triggers None available
Source Protocol RTSP
Source Method RTP/RTSP
Source Host Name user:pass@192.168.xxx.xxx
Source Port 554
Source Path /stream1
Source Target colorspace 32 bit color
Source Capture Resolution 1920
Source Reserve Aspect Ratio non checked
Source Orientation Normal
Source Deinterlacing Disabled
Source Use RTSP Response Media URL non checked

 ※ スマホアプリで追加したユーザアカウントでアクセス。

[Ubuntu]グラフィックボードが認識されない(解決)

ASRock x399 Phantom Gaming 6
NVIDIA GTX 660
Ubuntu 20.04

これでグラボ接続しても認識してくれない。なんなら起動時も不安定で起動しない場合もあった。
このグラボ補助電源が必要だし、サイズも大きくて、一部の配線を外さないと接続できなかった。
タワー型ケースでもかなり厳しい。
lspciで見えるのは、画面出力してる以下のみ。

41:00.1 Audio device: NVIDIA Corporation GK106 HDMI Audio Controller (rev a1)

そもそも作業がし難い事もあり、ライザーケーブルなるものを購入した。
Amazonで1000円以下だった。
ライザーケーブル経由で接続してみたら認識した。

41:00.0 VGA compatible controller: NVIDIA Corporation GK106 [GeForce GTX 660] (rev a1)
41:00.1 Audio device: NVIDIA Corporation GK106 HDMI Audio Controller (rev a1)

なんでかわからないけど。
スロットへのささりが甘かったのかも。

[PC]Jetson AGX Xavierセットアップ(4)

あれこれインストールしてからM.2 SSDへシステムディスクを切り替えたら(?)、ネットワークデバイスが認識しなくなった。
有線LANポートが認識せず、さらにWifi Intel 8265を増設してもダメ。
どうにも原因が分からないので、OSクリーンインストールする事にした。

■OSクリーンインストール手順

・AGX(ピンヘッダがある方のType-Cポート)とホストPC(Ubuntu 18.04)をUSB3.0 Type-Cケーブルで接続
・AGXをForce Recovery Modeで起動(3つボタン中の、真ん中ボタン長押し(そのまま)->左の電源ボタン長押し(そのまま)->両方を同時に離す)
  → AGXの電源LEDが点灯したが、モニタ画面には何も出てこない。これで成功らしい。
・ホストPCで一般ユーザ(rootはダメ)でsdkmanagerと実行 > GUI画面出てくる。
・Jetson OS含めてチェックdefaultのままで先に進む > Flash Jetson OSが進むと、途中でsshログイン画面になる
  → AGX側のOSインストールが完了してないため、どうにもssh接続が出来ない。
https://mukiudo.dev/post/jetson/0001-setup-trouble-shooting/
  → 原因分からなくて大変はまりましたが、上記サイトの情報が非常に参考になりました。感謝!
・一度sshは諦めて、スキップする。するとそのままFINISH的な画面になるので、そのまま20分ほど放置。
・しばらく待ってからAGXを再起動すると、待った時間にOSインストールが完了してるとの事。
 AGX画面見てみると、起動ログみたいな文字が出てるが、先に進まない。ALT+SHIFT+DELも効かない。なので、再起動ボタン(一番右)を押して再起動した。
・再起動後、Ubuntuが起動した。成功。

■初期セットアップ
・Ubuntuクリーンインストール直後は英語キーボードになっていた。なので以下で日本語レイアウトへ。
①dpkg-reconfigure keyboard-configuration

Generic 105-key PC (intl.) → Japanese → Japanese → The default for the keyboard layout → No compose key → Yes


②gnome-session-properties

Add → setxkbmap jp → Save


③vi /etc/bash.bashrc

setxkbmap jp


  → ②が必要か不明。③をやったらレイアウト直った。

■システムディスクをM.2 SSDに変更する
・先日記載した手順でM.2 SSDを実装する
・AGXを通常モードでUbuntu起動する。
・git clone https://github.com/jetsonhacks/rootOnNVMe
・cd ./rootOnNVMe
・./copy-rootfs-ssd.sh
・./setup-service.sh
・reboot
  → 再起動したら、M.2 SSDがシステムディスク(ルートディレクトリ=/)で起動できた。

[PC]Jetson AGX Xavierセットアップ(3)

この前M.2 SSD増設したが、それは既設のeMMC(システムディスク)のファイルシステムにぶらさげただけ。
やっぱりシステム領域が32GBは少ないので、M.2 SSDをシステムディスクに変更する事にした。

https://dev.classmethod.jp/articles/nvidia-jetson-xavier-nx-system-volume-migrate-to-nvme/

ここで説明されてる。
手順は以下。

■作業手順
 ・AGXにM.2 SSDを装着 > これは前回実施済
 ・AGX(Ubuntu)を通常起動。
 ・fdisk /dev/nvme0n1 > プライマリとしてパーティションを作成して終了。
 ・mkfs.ext4 /dev/nvme0n1p1
 ・git clone https://github.com/jetsonhacks/rootOnNVMe
 ・cd /home/xxx/rootOnNVMe
 ・./copy-rootfs-ssd.sh
 ・./setup-service.sh
 ・reboot > これでM.2 SSDがルートディスクとして起動できた。

■課題
 ・sshなどの設定ファイルもそのままに起動出来たようだが、なぜかネットワークが接続できない。
 ・nmcli connection showでeth0は表示されるが、nmtuiでactivateしようとするとエラーになる。
 ・

[PC]Jetson AGX Xavierセットアップ(2)

AGX Xavierの初期セットアップは出来たと思い、CUDA Toolkitなどのインストールをしていたら、バージョン互換などで大はまり。そして、気付けばAGX内蔵のeMMC(かな?)の容量32GBがフルになってしまった。
ファイルシステムの一部を増設M.2 SSDに移行するため、増設した。

たぶん、そこらじゅうの人がやってるけど、なぜが外人のおじさんのビデオが検索ヒットしたので参考にする。

https://www.jetsonhacks.com/2018/10/18/install-nvme-ssd-on-nvidia-jetson-agx-developer-kit/

■Jetson AGX XavierへM.2 SSDを増設する方法

・AGX Xavier分解
  ・AGXの足元のプラスチックの台を2つ、外す。ねじをそれぞれ2本づつ外せば、すぐにはずれた。
  ・ヒートシンクから基板を外す。これは動画見て納得してからでないと怖い。
   基板の両端を手でもって、右左と少しづつ、ひっぱっていく。
   片側はすぐに隙間が見えて取れそうな気がしてくるが、反対側は何かがはさまっているようで隙間が少ない。
   隙間少ない方へマイナスドライバを入れて、こじ開ける感じで押したら外れた。
   (注)ヒートシンク側と基板側は細いケーブルでつながっているので、そーっと外すように。

・M.2 SSDを取り付ける
  ・基板が取れれば、すぐにM.2スロットは見つかる。ねじを1本外してM.2 SSDを装着。

・AGX Xavierを元に戻す
  ・基板をヒートシンク側に装着する時だけ気を使った。
   基板を元の位置にはめてから、動画のおじさんが基板を親指で押してたので、それをみてやってみたら、カチッとはまった。
  ・基板がはまったら、後は台を2つ装着するのみ。簡単。

■Jetson AGX XavierでM.2 SSDを認識

・Ubuntu起動したら既に認識されている。
  # ls -lst /dev/nvme0n1

・あとはいつも通り、パーティション作成して、ファイルシステムでフォーマットして、マウントするだけ。
  # fdisk /dev/nvme0n1 > nでパーティション作成。プライマリでサイズはフル設定 > wで書き込んで終了。
  # mkfs.ext4 /dev/nvme0n1p1
  # mount /dev/nvme0n1p1 /home/hoge
  # vi /etc/fstab > 起動してもマウントさせるために以下を追記しておく。

/dev/nvme0n1p1 /home/share ext4 defaults 0 0

カレンダー
09 | 2022/10 | 11
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード