RustでUSB Mass Storage Class Bulk-Only Transportを実装する

掲題の通り Rust で USB Mass Storage Class (MSC) Bulk-Only Transport を実装した。 RAM 上の値を Disk Drive に見せかけたデバイスとして Windows から認識できるようになったので要所を書き残す。

実装には Rust を使用し、 Raspberry pi pico (rp2040) 上で動作確認を行っている。実装の Framework には embassy-rs を使用した。

USB 通信の構成・設定

Mass Storage Bulk Only 1.0 - usb.org に基づいて実装する。具体的に以下の通信を行う。

usb-config.png

Descriptor 構成

  • USB Device
    • Device Descriptor (MSC Bulk Only Transport)
    • Configuration Descriptor
      • Interface Descriptor0 (MSC Bulk Only Transport)
        • Endpoint Descriptor1: Bulk out
        • Endpoint Descriptor2: Bulk in

USB Mass Storage Class

USB(に限らない話だが)を用いた通信は Host/Device 双方の FW で共通のプロトコル定義に基づいた実装が必要だが、一般的に使われる機能については USB の仕様としてクラス定義されている。

例: キーボード・マウス等入力デバイス定義 Device Class Definition for Human Interface Devices(HID)

今日使われている OS で USB が使える環境にあれば、Host 側のドライバ実装は多くの場合用意されているので、独自のドライバ作成と署名・インストールの手順を省くことができる。 開発者は Device 側の FW を定義に基づいて実装するだけで良い。

このクラス定義のうち、外付け記憶装置を制御するための 1 つとして MSC がある。

Read more  ↩︎

2024年5月時点 VRChat Avatar Upload環境memo

Zenn 執筆環境構築のテスト記事も兼ねてアバター導入環境について言及。多分もっと丁寧な記事があると思うので備忘録程度。

必要な環境とその手順

  • VRChat アカウント
    • VRChat には Trust Rank という概念があり、作りたてのアカウントでは Visitor となっている
    • やり込んで Rank を上げるか、課金することで New User 以上の権限を持つアカウントになることで Upload 可能

      The transition between “Visitor” and “New User” is a special one — when a Visitor becomes a New User, they gain the ability to upload content to VRChat as long as they’re using a VRChat account. Users receive a notification when they have passed this rank, and are directed to the VRChat documentation page to get started with creating content.

  • Unity Hub
    • Unity は複数バージョンを共存させることがあり、これの管理に(?)Unity Hub を使用する
    • Unity.com から DL してセットアップしておく、また起動後アカウントやライセンス認証を求められる場合は Unity のアカウントも取得しておく
  • Unity 2022.3.6f1
    • VRChat 公式によるとこのバージョンが推奨のため、 Unity Hub 導入後に VRChat の現時点での最新バージョンをいれる
    • (筆者は 2019 を使ったことあるが 2022 が初なのでせっかくなので本記事を書き残す) > The current Unity version used by VRChat is 2022.3.6f1. If you have Unity Hub installed, you can click this link to install the correct version of Unity. 2022.3.6f1 is also available in the Unity editor release archive.
  • VRChat Creator Companion (VCC)
    • VRChat が Unity 向けに提供している Avatar, World 向けの SDK などを手軽に導入・管理(?)するためのツール
    • VRChat アカウント取得後なら https://vrchat.com/home/download から DL できる
  • (VCC 代替) ALCOM
    • anatawa12 さんが作成している VCC 互換ツール。 vrc-get/vrc-get - GitHub の GUI FrontEnd
    • 使ってみた感じ本家よりかなり高速で快適に使用できているので、オススメしたい。以後の説明で VCC を使い箇所は ALCOM で読み替え可
    • https://vrc-get.anatawa12.com/alcom/ から DL 可能
  • 何らかの画像エディタ
    • アバターの改変用。筆者はクリスタ常用 (だが、どちらかといえば PSD 同梱してくださる方が多い印象)
Read more  ↩︎