スピードキュービングしたいわけじゃないとか書いてたけど、一旦揃えらえるようになると、もっと早く揃えられるようになりたい、という欲が出てしまった。n-look OLL + 2-look PLL ぐらいで1分切れる中級者ぐらいなら現実的かな?と思い、いくつか手順を覚えた。

覚えた順

以下OLLはメガハウスの説明書で覚えたやつ。最初に揃えれるようになった段階ではPLLの手順は覚えておらず、U R U' R を使う別の方法で揃えてた。

  1. OLL45 (クロス用) 実際は側面を見ながら F (R U R' U')*n F' と連続で回している
  2. OLL26 (クロスから完全OLL Anti-sune と呼ばれる手順らしい)

以下PLLはトリボのLBL for beginnersで覚えたやつ。6種類で 2-look できるとのこと

コーナーPLL

(どちらも純粋なコーナーPLL=Aパームではないので先にやる必要がある)

  1. Tパーム (とても回しやすい! 数回回すだけで手に馴染む)
  2. Yパーム (まだ馴染んでないのでこのケースでちょっと嫌な気分になる)

エッジPLL

  1. Uaパーム
  2. Hパーム
  3. Ubパーム
  4. Zパーム

ここまでで n-look OLL + 2-look PLL ができて嬉しい感じ。Uパームだけで n-look PLL はできるが……

十字OLL

OLL で何度も同じ手順をまわすのが嫌になり十字OLLを覚える気力が湧いた。以下の順で1日に1つ程度覚えるようにすすめた。十字つくるまでは簡単な手順のn-lookでやってる。

OLL27 (26と対で手順が簡単 sune と呼ばれる手順らしい)
OLL25/24 (対で手順がわかりやすい)
OLL22 (動きがわかりやすい)
OLL23 (覚えにくいけどOLL24と形が似ててよく出てくる気がしてしまう)
OLL21 (十字型で一番確率低い)

F2L

F2L は原理と数パターンの動きだけ覚えてるけど手が勝手に動くレベルにはなっていない。

タイムで60秒切るにはF2L不要みたいなのも見たけど、F2Lが面白いポイントだと思ってるからこれはやりたいところ。

EO (エッジオリエンテーション) という概念があり、EO が適切なら持ち替え(y y')せずに、右側のスロットなら (手前でも奥でも) 右手 (RU) で、左側のスロットなら左手 (LU) で入れることができるということみたい。持ち替えが必要かどうかはエッジパーツにだけ依存している。とりあえずF面B面の色がU面に出ているエッジはEOがあっているので持ち替え不要という原則を知っていれば、裏に入れるのも手順が限られるので自然と入っておもしろい。

D面クロス

下を白にしたときオレンジ→青→赤→緑の関係を覚える。とりあえず前を青に固定して、左オレンジ右赤、奥緑にしてみる。固定するとよくないかも?だけど頭は混乱しにくい。

スクランブルして白面を見たら入ってるピースはそのままに (2個以上入ってる場合、背面優先)、基本的は中段にエッジを落としてUwでグルグルして該当箇所に落とすイメージ、連鎖して入るならそういう手を読む。

めんどうくさくなって回すまえに完璧に読めてない。

その他

EパームはOLL25と24を連続してやるだけなので、見分けさえつけれれば1-look で回せる。が判断が意外と難しい…… 同色が揃っているのを縦に並べるイメージ

OLL33 は OLL45 と上面の形が一緒。そしてこれはYパームの後半の動き (Yパーム回すと途中でこのOLL型が出てくる)なので、それだけ知ってれば回せる。なおYパームの前半の動きは OLL37 (つまりYパーム==OLL37+OLL33)

OLL44 は OLL45 の F を Fw にしただけなので、すぐ回せる。そして OLL2 (点で左1列側面が黄) は OLL45→OLL44と連続して回すだけ。

指づかい

回転記号にはどう持って回しはじめれば回しやすいかは書いてないので、自分で考えて試行錯誤するより最初からうまい人の回しかたの動画見たりしたほうが良い。PLL21種はトリボのYouTubeチャンネルに全手順の動画があるので、トリボのチートシート見ながらの場合はこれがよさそう。

OLL は動画がなかったので今のところ雰囲気で回してる。

apt では入らないので以下の arm のサイトから該当するものをダウンロードする

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

自分の環境では ~/app/xxx に sdk いれることが多いので

wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
tar xvf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
mv gcc-arm-none-eabi-10.3-2021.10 ~/app/
cd ~/app
ln -sf gcc-arm-none-eabi-10.3-2021.10 gcc-arm-none-eabi

して、.zshrc で ~/app/gcc-arm-none-eabi/bin にパスを通す

  1. トップ
  2. tech
  3. WSL2 の Ubuntu に gcc-arm-none-eabi

https://github.com/dorssel/usbipd-win

WSL2 内ではホストの USB デバイスを使うことができないという大きな欠点がある。WSL2 のベースとなる Hyper-V 基盤は USB の仮想化というのがないので、すぐにサポートされることはないだろうという見込み。

そこで USB IP という USB プロトコルを IP に乗せネットワーク経由にする技術がある。usbipd-win はこの USB IP のホストを Windows 上で実現するソフトウェアの1つでOSS。MS の公式 YouTube で紹介されていて知った。

USB IP 系のあれこれはドライバの関係で secure boot と相性がわるかったりするが…… これはどうだろう。現状よくわかってない (Secure Boot していないので)

インストール

winget install --exact dorssel.usbipd-win

この状態で Administrator 権限の PowerShell をひらき、usbipd.exe list が実行できることを確認する

$ sudo /usr/lib/linux-tools/5.4.0-77-generic/usbip list --remote=172.18.48.1
Exportable USB devices
======================
 - 172.18.48.1
        4-3: STMicroelectronics : ST-LINK/V2 (0483:3748)
           : USB\VID_0483&PID_3748\6&19CA3885&0&3
           : (Defined at Interface level) (00/00/00)
           :  0 - Vendor Specific Class / Vendor Specific Subclass / Vendor Specific Protocol (ff/ff/ff)
 lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0483:3748 STMicroelectronics ST-LINK/V2
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

一応 認識して使えてはいるっぽい。

 sudo openocd -f interface/stlink-v2.cfg -f target/stm32f0x.cfg
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
none separate
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Info : STLINK v2 JTAG v34 API v2 SWIM v7 VID 0x0483 PID 0x3748
Info : using stlink api v2
Info : Target voltage: 3.262724
Warn : UNEXPECTED idcode: 0x2ba01477
Error: expected 1 of 1: 0x0bb11477
in procedure 'init'
in procedure 'ocd_bouncer'

チェックするポイント

  • usbipd attach するのはホスト側
  • Administrator 権限の PowerShell (またはコマンドプロンプト) で実行すること
  • Window Defender Firewall で詰まる。usbipd wsl attach または Ubuntu 側で usbip attach --remote=... したときに刺さる場合、Firewall にひっかかっている可能性がある。mmc.exe で usbipd.exe がブロックされていないか確認する

usbipd.exe のデバッグ方法

うまくいかないときにどうやってデバッグするか。原因をさぐるか。

Visual Studio Community でいいので VS で .sln を開けばビルドできる。既に usbipd をインストール済みの場合、windows のサービスで起動している usbipd は止めておく。

Administrator 権限の PowerShell でサーバ側 (サービスとして起動しているプロセスと同様)

usbipd.exe server

さらに別タブで

usbipd.exe list

とすればいい。

WSL2 内からは

sudo /usr/lib/linux-tools/5.4.0-77-generic/usbip list --remote=172.18.48.1

のようにホストの IP アドレスを指定して usbip コマンドを実行する。ホストの IP アドレスは /etc/resolv.conf の nameserver を見るのがてっとりばやい。

usbipd wsl ... コマンドは wsl 内でいい感じに usbip コマンドも実行してくれるというだけ

エラー (workaround が適用ずみ)

xCORE USB Audio 2.0 という audio device が

PS C:\Users\test> usbipd list
Unhandled exception. System.AggregateException: One or more errors occurred. (An item with the same key has already been added. Key: [1, UsbIpServer.UsbConfigurationDescriptors+UsbConfiguration])
 ---> System.ArgumentException: An item with the same key has already been added. Key: [1, UsbIpServer.UsbConfigurationDescriptors+UsbConfiguration]
   at System.Collections.Generic.TreeSet`1.AddIfNotPresent(T item)
   at System.Collections.Generic.SortedSet`1.Add(T item)
   at System.Collections.Generic.SortedDictionary`2.Add(TKey key, TValue value)
   at UsbIpServer.UsbConfigurationDescriptors.AddDescriptor(ReadOnlySpan`1 descriptor) in D:\a\usbipd-win\usbipd-win\UsbIpServer\UsbConfigurationDescriptors.cs:line 96
   at UsbIpServer.ExportedDevice.GetConfigurationDescriptor(DeviceFile hub, UInt16 connectionIndex, Byte numConfigurations)
   at UsbIpServer.ExportedDevice.GetDevice(SafeDeviceInfoSetHandle deviceInfoSet, SP_DEVINFO_DATA devInfoData, CancellationToken cancellationToken) in D:\a\usbipd-win\usbipd-win\UsbIpServer\ExportedDevice.cs:line 202
   at UsbIpServer.ExportedDevice.GetAll(CancellationToken cancellationToken) in D:\a\usbipd-win\usbipd-win\UsbIpServer\ExportedDevice.cs:line 239
   at UsbIpServer.Program.<>c.<<Main>b__19_9>d.MoveNext() in D:\a\usbipd-win\usbipd-win\UsbIpServer\Program.cs:line 234
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayClass79_0.<OnExecute>b__0()
   at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
   at UsbIpServer.Program.Main(String[] args) in D:\a\usbipd-win\usbipd-win\UsbIpServer\Program.cs:line 555

usbview.exe による

       ---===>Device Information<===---
English product name: "xCORE USB Audio 2.0"

ConnectionStatus:
Current Config Value:              0x01  -> Device Bus Speed: High (is not SuperSpeed or higher capable)
Device Address:                    0x0A
Open Pipes:                           2

          ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0200
bDeviceClass:                      0xEF  -> This is a Multi-interface Function Code Device
bDeviceSubClass:                   0x02  -> This is the Common Class Sub Class
bDeviceProtocol:                   0x01  -> This is the Interface Association Descriptor protocol
bMaxPacketSize0:                   0x40 = (64) Bytes
idVendor:                        0x20B1 = XMOS Ltd.
idProduct:                       0x000A
bcdDevice:                       0x06C5
iManufacturer:                     0x01
     English (United States)  "XMOS"
iProduct:                          0x03
     English (United States)  "xCORE USB Audio 2.0"
iSerialNumber:                     0x00
bNumConfigurations:                0x02
*!*CAUTION:    Most host controllers will only work with one configuration per speed

とでていてこれが問題らしい。#61 というパッチを送ってとりあえずなおしてもらった。

  1. トップ
  2. tech
  3. WSL2 で USB (usbipd-win)

結論

Bルートサービスの「パスワード変更」を申請したらなおった。

追記:最大一週間停止するがほうっておけば設定してくれるらしいので手続は不要なもよう

Bルートサービスを利用中にスマートメーターの取り替え工事があり利用できなくなったが、何か手続きする必要はありますか?(2019年1月18日更新)

基本的にお客さまに行っていただくことはございません。当社にて、取り替え後のスマートメーターに認証ID・パスワード等の再設定を行いますので、設定完了までの間、一時的(最大で1週間程度)にサービスを停止させていただきます。
ただし、通信環境などにより、お客さまにてHEMS機器への認証ID・PWの再設定を行っていただく場合がございます。

https://www.tepco.co.jp/pg/faq/faq.html

経緯

  1. 東京電力PGからの連絡で電力計交換に (定期メンテナンス的なやつだと思う)
  2. もともとスマートメータになっていてBルートサービスも使っていた

Bルートサービスの扱いについて特に何も言われなかったので、一抹の不安がよぎり、接続を確認したら案の定電力量が取得できなくなった。

  1. 2021-11-16 10:00 ごろ (電力計交換・インターフォンで終わりましたと言われる)
  2. 2021-11-16 10:00 ごろ Bルート経由で電力量が取得できず
  3. 2021-11-16 10:17 Bルートサービスの「パスワード変更」申請を出す
  4. 2021-11-18 12:00 ごろ。一時的に旧パスワードで取得可能になる
  5. 2021-11-18 13:16 ごろ。旧パスワードで取得不可になる
  6. 2021-11-19 13:37 ごろ。新パスワードがメールで通知されて取得可能になる

電力計交換のタイミングで機器側のBルート設定が無効になったと思われる。パスワード変更申請をうけて、リモートで機器設定が行われ、一時的に旧パスワードで接続可能になった。そこから1時間ほどでパスワード再設定が行われた。

放っておいて接続可能になった例もあるみたいなので、交換してから数日すると勝手に有効にしてくれる可能性がある。のでパスワード再設定はいらないのかも?

メーター交換はやはり鬼門っぽい。東電PG側でいい感じに連携してほしい。ついでにパスワード変更ではなくBルート有効化処理だけチェックしてくれるシステムにしてほしい。

  1. トップ
  2. tech
  3. 電力計交換でBルートサービスが繋がらなくなった (解決済み)