Mac mini M1に3枚目のディスプレイ接続 DisplayLink

[macOS Big Sur 11.6.1]

Mac mini m1に接続できる外部ディスプレイは2枚までですが、DisplayLinkのチップを搭載したUSB-HDMI変換アダプタで3枚目を使用可能です。

Amazonブラックフライデーセールで変換アダプタがセール(1000円引きの4319円)になっていたので購入し、接続してみました。ディスプレイはFullHD 1920*1080です。

Macの設定に少し手間取りましたが、問題なく画面表示できました。

設定方法
1.DisplayLinkのサイトからドライバをダウンロード&インストールする。
2.Macのシステム環境設定[セキュリティとプライバシー]-[プライバシー]-[画面収録]-[DisplayLink Manager]をチェックする。
3.Macのシステム環境設定[ユーザとグループ]-[ログイン項目]でアプリケーションのDisplayLink Managerを登録する。OS起動後の3枚目の都度設定が不要になります。

[DisplayLink USB グラフィック技術]
DisplayLink ManagerによりCPUを用いて仮想ディスプレイ空間を作り、そこで画像描画されたグラフィックデータを圧縮してUSB-A経由で転送します。そして圧縮データは変換アダプタのチップによりグラフィックデータにデコードされてディスプレイに表示されるという仕組みです。

2022/1/23追記
個体が悪かったのかCableCreationのアダプタは2週間で故障。少々お高いPlugable製に買い替え3週間異常なし。6780円
2022/5/20追記
Plugable製4ヶ月半経過するも異常なし。現価格7480円。

macOS MontereyからBig Surへのダウングレード

M1 Mac miniのmacOSをBig SurからMontereyにアップグレードしましたが、今一つなので元に戻しました。

色々挙動がおかしい中、”英数入力からのかなキー2回押しでローマ字変換する”機能が明らかにバグっていたのが致命的でした。一応Appleにはフィードバックしています。

復旧方法をメモしておきます。Intel MacではなくM1 Macの方法です。

1.USBメモリや外部SSDなどのストレージにBig Surインストーラをコピーする。

# ダウンロードしたBig Surインストーラを外部SSDなどにコピーするコマンド

sudo /Applications/Install\ macOS\ Big\ Sur.app/Contents/Resources/createinstallmedia --volume /Volumes/[ボリューム名]

2.Macユーティリティを電源ボタン長押しで呼び出し、ディスクユーティリティを選択する。Mac本体のデータを消去する。

3.起動ディスク選択画面を電源ボタン長押しで呼び出し、外部SSDを選択。Big Surをインストールする。

4.移行アシスタントでTime Machineのバックアップから復旧する。

Macの外部ストレージ 転送速度検証 SMBパケット認証無効

[macOS Catalina 10.15.7, Windows10]

SMB接続のパケット認証を無効にしてみました。転送速度は19KB/sになり、かえって遅くなりました。早々に測定を切り上げたので正確な数値は分からないものの、セキュリティも甘くなっていいこと無しですね。

Windows同士の転送速度は不明ですが、Mac-Windows間で数KBのファイルを大量にコピーするにはSMBでは厳しいという結果でした。

[default]
signing_required=no

Macの外部ストレージ 転送速度検証 SMB

Mac miniの外部SSDを実質的なデータストレージにしています。

WindowsPCと共有するため、定期的にSSDを外してPCにつなぎバックアップを取っていましたが、最近はデータ転送速度がかなり遅くなっていました。

調べてみるとSSDのexFATフォーマットが問題であることが判明し、MacOS拡張に変更してLAN接続からSMBで転送してみました。

その結果、平均ファイルサイズが10KB以下の場合は改善が認められず、結局HDDをMac miniにつないで都度バックアップを取ることにしました。

LAN接続(1Gbps)に期待したものの、この遅さでは仮に10Gbps回線でつながったとしても問題外です。

Steel Legend B450の拡張性

ASRock Steel Legend B450にUSBカードを増設することで、性能的ロスが発生しました。

PCIE3.0x2以上のカードを増設すると他の性能低下が生じます。グラフィックボードを使うだけなら問題ないです。

ヘビーユーザーとはいかないまでも、それなりに拡張機能を活用しているユーザーとしては結構な痛手でした。

  • 性能的ロス1:無効になっていたPCIE4を使うために、M.2 SSDをM2_2スロットに移した。これに伴い転送速度は4GB/s(PCIE3.0x4)から2GB/s(PCIE3.0x2)に低下。
  • 性能的ロス2:M2_2スロットを使ったため、SATA5とSATA6が無効になりつないでいたHDDを認識しなくなった。
  • 性能的ロス3:M2_2スロットには付属ヒートシンクを装着できず、別途入手する必要が生じた。

2番目のPCIE3.0x16スロットはこのモードで使えないのですから、PCIE3.0x4の形状にしてもらいたかったです。PCIE3.0x4スロットを用意するコストが掛かるのでこうなったのでしょうか。業界的にこういうのは問題ないのかな。時間があれば他社製品についても調べてみます。

Macの外部ストレージ exFATは危険?

Mac miniの外部ストレージとしてSATA SSDを使っているのですが、Windows機のUSB3.2 Gen2(USB3.1 Gen2)につなげ替えてバックアップを取ろうとしても転送速度が3MB/sしか出ません。

調べてみるとexFATフォーマットが怪しいようです。転送速度の問題だけではなく、データ破損のトラブルも多いらしいです。これまでマザーボードを疑っていたのですが、どうやら見当違いだったようです。

OSまたぎのデータ転送の場合は、Macの外部ストレージはexFAT以外のフォーマットにして、Windows機とはLANでつなぎSMBなどでデータ転送するのがベターとのこと。

一連の検証の中でASRock Steel Legend B450にUSB3.2 Gen2のインターフェースカード(PCIe3.0 x4)を増設する際、2番目のPCIe3.0 x16に挿しても認識せずかなり焦りました。

M.2の上の方のスロット(M2_1)にSSDを付けると2番目のPCIe x16が無効になるということでした。しょうがないのでSSDをM2_2に挿しました。

しかし、M2_2スロットには付属のヒートシンクを付けることができません。その上、転送速度は半分になります。つまりx16を2つとも使うとOS入りSSDは過熱リスクが高まり、大幅なスペックダウンにもなります。

やはり自作パソコンで色々遊ぶのであれば、エントリークラスではなくミドルクラス以上のマザボを使うべきですね。

新しいマザボに替えたいのですが、Intelに戻るかRyzen 2600のままAMDで行くかで迷っています。

参考記事

exFATよりもMacOS拡張が望ましい

データベースとExcelの相性

csvファイルをExcelで加工すると直接さわっていない”1-1″が”1月1日”に変換されてしまいます。また”2021-01-01″ や”2021年1月1日”が”2021/1/1″と表示されるなどデータの表示形式が正確に反映されません。小数(1.0)が整数(1)として表示されるのも看過できない問題です。そもそもデータ型がソフトの都合で変更されるなんて普通はあり得ない話です。

これまでどちらかというと親Excel派でしたが、一連のトラブルで足を引っ張られるとさすがに距離を置かざるをえません。一部の技術者がExcelを忌み嫌っている理由がよくわかりました。

データベースが関係する作業の場合、CSVビューアーにはMacの表計算ソフトNumbersを使うようにします。これまで全く使ってきませんでしたが、データが正確に表示されて表計算ソフトらしい見やすさもあり、低機能なもののビューアーとしては最適です。

常々思っていることですが、日本の企業や役所がExcelに依存している状況についても抜本的に見直すべきでしょう。Excelは空気を読んで勝手にデータ型を変更し表示するので日本人が好むのもわかりますが、それでは論理的思考力が育まれません。

向上心を持ってIT技術者を目指される方は、Microsoft Officeをある意味適切に使いこなしている所を職場として選ぶことをお勧めします。目安としてはデータベース管理にMicrosoft Accessを採用していない組織がいいのではないでしょうか。

MicrosoftにはVScodeやExcel(事務作業限定)で常日頃お世話になっているものの、それら以外特にWindowsなどには極力関わりたくないというのが正直なところです。

Mac mini(2018)のRAMメモリ増設

メモリ8GBの吊しモデルではさすがにつらくなってきたので、32GBに増設しました。

留意点を以下に記しておきます。

1.トルクスドライバー
T6の穴付きで先の丈夫なものがなかなか見つかりませんでした。穴径の精度を出すのが難しいためか、あのVESSELも扱っていないようです。色々調べてアネックスというブランドのドライバーを購入しました。

2.コネクタやビスの固着
異常に発熱するintelCPU搭載だからか、電源コネクタやロジックボードのビスがかなり固くて苦労しました。ビス穴をなめないようにドライバーを強く押して無理せず回す動作を何度も繰り返しなんとか緩めました。

3.NVRAMリセット
無事メモリを交換したものの電源をONにしてもLEDが点灯するだけで画面が出ず、結構焦りました。NVRAMをリセットしてようやく起動しました。リセットするには、電源ONと同時にopt + ⌘ + P + R を20秒程度押し続け、起動音が1回鳴ったら離します。起動音は計1回あるいは2回鳴ります。

4.リセットに伴う再設定
起動音を無効にし、XtraFinderを再設定する。

特に3番目は誤って故障と判断しかねないので要注意です。公式ではユーザーによるメモリ増設を認めていないため、Appleサポートに相談するわけにもいかず、業者に修理依頼した方もいらっしゃるのではないでしょうか。

そこそこの難易度ですから、こういった作業が苦手な方はAppleに増設依頼する方がいいのかもしれません。

再設定参考記事

【macOS】17 Macの起動音を復活させるコマンド

https://mowareblog.net/2021/05/656/macos-29-xtrafinder%e3%81%aecatalina%e3%81%a7%e3%81%ae%e4%bd%bf%e7%94%a8/

PC 正常性チェック(Windows11への移行) DeskMini他

Windows11への移行が可能かどうか表題のツールで確認しました。

ASRockのベアボーンPC DeskMini A300はBIOSの設定を以下のように変更してOKになりました。Athlon 3000Gという非力なCPUですが問題ないようです。またCPU搭載グラフィックスRadeon Vega 3 GraphicsはDirectX 12に対応しており要件を満たしています。

BIOS変更内容
Advanced – CPU Configuration – AMD fTPM switch – AMD CPU fTPM

自作デスクトップPCの方は6年前に買ったビデオカードGeForce750TiがDirectX 11.2対応のためNGでした。Ryzen5 2600を載せたマザーボードSteel Legend B450なのでfTPMに設定は可能です。 Windows11にバージョンアップしたくなったら新しい安グラボを買います。

2021/6/27追記 他のチェックツールによるとGeForce750TiはDirectX 12に対応しており、パーティション方式(MBR)等でNGとなることが判明しました。

[無線] 03 PythonでADIFファイル作成 後編

[macOS Catalina 10.15.7]

前回の続きです。

eQSLサイトに移動局コールサインを登録しているかどうかを確認し、登録していなければ末尾なしのコールサインへeQSLカードを送付するようADIFファイルを書き換える、といった内容です。

VBAでも同様の作業ができるかどうか検証したいところですが、Mac版Excelではスクレイピングができないので気が向けばWindows版Excelで試してみます。

<前編からの続き>

driver = webdriver.Chrome()
window_num = 1
for i,call in enumerate(call_l):
    print(call)
    print(f'コールサイン文字数 {len(call)}')
    if len(call) == 8:
     # eQSlサイトのURLを取得
        driver.get("https://www.eqsl.cc/QSLcard/Home4G.cfm")

        WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/form[2]/font/input[2]")))

     # 検索窓にコールサインを入力する
        driver.find_element_by_xpath("/html/body/div[2]/form[2]/font/input[1]") \
.send_keys(call)

        tm.sleep(1)

        # 検索ボタンをクリックする
        driver.find_element_by_xpath("/html/body/div[2]/form[2]/font/input[2]") \
.click()
        # 新しいウィンドウへ遷移する
        handle_array = driver.window_handles
        driver.switch_to.window(handle_array[window_num])

        WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='CFForm_1']/input[2]")))

     # 検索結果の文字列を取得する
        text = driver.find_element_by_xpath("/html/body/center/h2/font").text
        print(text)

        # 検索結果にnotおよびyetが含まれていたらコールサインの末尾2文字を削除しADIFデータを書き換える
        # 検索結果例:"JA3AAA/3 is not registered yet"
        if 'not' in text and 'yet' in text:
            new_str1 = data_l[i].replace('<CALL:8>','<CALL:6>')
            new_str2 = new_str1[:14] + new_str1[16:]
            print(new_str2)
            
            # ADIFデータを置き換える
            data_l[i] = new_str2

        window_num +=1

# ブラウザを閉じる
driver.quit()

# AGIFデータを改行コードで連結する
data_l2 = '\n'.join(data_l)

# ヘッダとAGIFデータを結合する
header = '<PROGRAMID:6>HAMLOG\n<ADIF_Ver:5>3.1.0\n<EOH>\n'
final = header + data_l2

# 結合したデータをadiファイル(プレーンテキスト)に変換する
filename2 = f"/adif/{datetime_now_str}_adif.adi"
with open(filename2, "w", encoding="shift_jis") as f2:
    f2.write(final)

# 前編で作成したCSVファイルを削除する
os.remove(filename)

作成されたADIFファイルの一例です。

<PROGRAMID:6>HAMLOG
<ADIF_Ver:5>3.1.0
<EOH>
<CALL:6>JA3AAA<QSO_DATE:8:D>20210602<TIME_ON:4>0611<BAND:2>2m<MODE:2>FM \
<RST_SENT:3>59+<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<QSLMSG:6>CU 73! \
<APP_EQSL_AG:1>Y<GRIDSQUARE:4>AA00<EOR>
<CALL:6>JZ3ZZZ<QSO_DATE:8:D>20210602<TIME_ON:4>0730<BAND:4>70cm<MODE:2>FM \
<RST_SENT:3>59+<RST_RCVD:0><QSL_SENT:1>Y<QSL_SENT_VIA:1>E<QSLMSG:6>CU 73! \
<APP_EQSL_AG:1>Y<GRIDSQUARE:4>AA00<EOR>