薬味備忘録

Aonori Tech Diary

enable ffmpeg hw encoding/decoding on Jetson Xavier NX

Jetson Xavier NXを入手したので、HW Encoding/Decodingを試そうとしたらffmpeg導入で躓いた。解決方法のメモ。

step.1 nvccにPathを通す

.bashrcに以下を追記して、nvccにPathを通す.

export CUDA_HOME=/usr/local/cuda'
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}'
export PATH=${CUDA_HOME}/bin:${PATH}'

参考 【2020年版】NVIDIA Jetson Xavier NXの初期設定、最高速で動かす設定、空きメモリを増やす方法等 (2020年の JetPack 4.4になっても nvccのパスがデフォルトで通って無いとか、初期設定が必要です)

step.2 nvEncodeAPI.hを追加

NVIDIA Video Codec SDKを以下ページからダウンロード。

NVIDIA VIDEO CODEC SDK - Get Started | NVIDIA Developer

ヘッダファイルさえあればいいので、ソースコードをダウンロードする必要はない。画像の左側ボタンからVideo_Codec_SDK_10.0.26.zipダウンロード。

f:id:aonrjp:20201009130336p:plain

解凍後 Video_Codec_SDK_10.0.26/Interface/nvEncoderAPI.h/usr/include に配置。

参考 Trouble installing libav with nVidia Codec SDK support - CUDA Programming and Performance - NVIDIA Developer Forums

step.3 ffmpegソースビルド

今回はFREEWING-JPさんのインストールスクリプトを使って、ffmpegをソースビルドします

【2020年版】NVIDIA Jetson Nano、Jetson Xavier NXの便利スクリプト (Jetsonの面倒な初期設定やミドルウェアのインストールを bashスクリプトの実行だけで簡単にできます)

cd
git clone https://github.com/FREEWING-JP/Jetson_Convenience_Script
bash ./Jetson_Convenience_Script/NV_FFmpeg/inst_NV_FFmpeg.sh

AF-954を分解

アーケード基板を買った

最近またBEEPで散財しまして、次はアーケード基板を購入しました。テーブル筐体組むなら、やっぱ100円積んでやりたいので部品調達をば。

コインセレクターを買う

基板から見れば、コインを識別して、受け入れるべき硬貨が投入されればクレジットの信号線をGNDに落とす必要があります。 このれらの作業を行うモジュールはコインセレクタ(あるいはコインシューター)と呼ばれ、 最近はAmazonでノーブランドのものも安く販売されています。

しかしまあ折角なので、業務用のバルクを入手。メルカリで。便利な世の中。

f:id:aonrjp:20191023154944j:plain

AsahiSeiko AF-954

今回入手したコインセレクターは旭精工の電子コインセレクター「AF-954
カニカルなコイン判定ではなく、電子的に良しなにやってくれます。受け入れる硬貨の種類も10円、50円、100円、500円から選択可能です。ただし、資料が一切付属していないので要調査。

判明した信号線

入出力は

  • 入力は端子をGNDに短絡することで入力
  • 出力は端子がGNDに短絡されることで出力

といういつもの感じで、ピンアサインは以下の通りでした。

上
10 ○-  10円投入(出力)
 9 ○-  10円禁止(入力)
 8 ○-  50円投入(出力)
 7 ○-  50円禁止(入力)
 6 ○- 100円投入(出力)
 5 ○- 100円禁止(入力)
 4 ○- 500円投入(出力)
 3 ○- 500円禁止(入力)
 2 ○- +12V
 1 ○- GND
下

ただし、500円は旧500円玉しか受け付けません。これがメルカリ出品の理由のひとつか。

調査方法

折角なので調査の流れをメモしておきます。

分解。

買ったものは責任をもって分解しましょう。
Let's 分解。僕はウキウキしながら機構部分を分解してしまいましたが、信号線周りを確認するだけなら プラ板カバー側を1枚外せば制御基板が出てきますので、作業としては極めて単純です。

f:id:aonrjp:20191023155421j:plain

基板からピンアサインを推定する

裏表面のパターンなり部品から端子のピンアサインを推定していきます。推定といっても、前提として

  • アーケード基板の主な動作電源電圧は5V、12V
  • スイッチやクレジット投入信号は、対象の信号線をGNDに落とすことでシグナルになる

これらを意識しながら見つめると、そんなに複雑なもんではありませんでした。 モジュールの外に出てくるのはXHの10pinコネクタ。ひとまず一番下は間違いなくGND、その一つ上が電源ライン。 あとは面実装のFET的なものにつながってるので、入出力系の信号線かな。

参考画像も調べる

Google画像検索を眺めていると、旭精工が販売している別の電子コインシューターの画像には、背面コネクタに ピンアサインが明記されていました。これも参考にします。

受け入れ禁止とクレジット信号

これは他のコインセレクターにも共通していることですが、電源ラインのほかに受け入れ禁止クレジット信号があります。受け入れ禁止は、硬貨が投入されてもクレジットカウントせずにそのまま返金する状態。クレジット信号は、正しい硬貨が投入されて、受け入れ禁止でなければ効果が受け付けられ、信号線が一定時間GNDに落ちます。

信号線を推定して試す

AF-954では4種類の硬貨を扱えるので、残りの8ピンはそれぞれの硬貨の受け入れ禁止クレジット信号と推定。 まず受け入れ禁止信号線を探します。今回の調査では、この時点ではまだ新500円玉を使っていて訳が分からなくなるという事案発生...

ある程度試していくと、あとは流れで判明します。クレジット信号の方は、コイン投入時の状態をオシロで見たらしっかりGNDに短絡されたので、これで完了。

コインセレクターが使えるようになった

とりあえず硬貨が受け付けられるようになりました。あとは肝心のアーケードゲーム本体を動かせるようにするだけじゃ~~~~!!!

Macintosh SE/30 Repair #7

System 7.5.3に上げた

漢字Talk System 6.0.5のインストールに成功し、FDDが使えるようになったMacintosh SE/30ですが、やはりSystem7系の恩恵を受けたい(何よりMultiFinderが使いたい)ので、漢字Talk 7.5.3のインストールを行いました。

前提

f:id:aonrjp:20191018120033p:plain

うちのMacintosh SE/30 は MotorolaのCPU 68030が載っています。このCPUアーキテクチャは68kと呼ばれ、System 7系までが動作します。(厳密には7.5.3 rev2までがサポート、 System 7は7.5.5が最終バージョン)この次バージョンはMac OS 7.6となります。
Classic Macと言った場合はOS Xより前のMac OS 9までを指します。

圧縮ファイル系

Old Mac向けアプリケーションの多くは、当時配布されていた圧縮形式で再配布されているので、解凍するにはそれらに対応したアプリが必要になります。

.sit, .hqx

StuffItで圧縮されたファイル。StuffIt Expanderで解凍。

.bin

MacBinary形式の圧縮ファイル。MacBinary II+とかで解凍。

インストールイメージの取得

Apple 公式の配布跡地Internet Archiveあたりで見にいくorどこかからkt_7.5.3.smi_.bin をDLします。インストーラはMacBinaryで圧縮されているので、解凍してkt_7.5.3.smiを取り出します。解凍作業はOSXではなく68k上で。

OSアップデートの実施

f:id:aonrjp:20191018115450p:plain

kt_7.5.3.smiを実行すれば、ディスクイメージがマウントされ、インストーラを実行できます。対象のパーティションと必要な機能を選択してインストールしてください。

参考リンク(資材置き場)

obsolete.macfixer.com

www.fenestrated.net

Macintosh SE/30 Repair #6

SCSI2SDを使ってみた

先日のFloppyEmuで無事にSystem6.0.1をはじめとしたインストーライメージを起動できたので、いよいよインストールします。が、この時代にSCSIのまともなHDDはそう簡単に入手できない&手に入っても寿命が不透明です。ので、最近は変換アダプタを使ってメモリカードSCSIのHDDに化けさせるのが一般的。

変換番長Pro

よくレガシーPCの復活記事で見かけるCFカード to SCSIなのが「変換番長 Pro」

classicpc.org

家電のケンちゃんとかBEEPにも置いてあるので、安心感がありますがちょい高い。あと、Compact Old Macintosh系での動作報告がいまいちハッキリ見つからない...ので今回はパス。

SCSI2SD

海外のフォーラムとかでは割と動作例を見かけるのがSCSI2SD。

SCSI2SD - code/src wiki

これはこれで、色々バージョンがあって、フルサイズのSDなりmicroSDなり、SCSIの電源コネクタ形状が違ったりするので注意。

Macintosh SE/30で使う場合、オススメは動作報告もあるVer.5系です。今回はITEADで販売されていたSCSI2SD(Model:IM150402001)を購入。

SCSI2SDの使い方(漢字トーク 6.0.7をインストール)

設定用アプリケーション

SCSI2SD自身の設定を読み出し/書き換えるためのアプリを公式wikiからDLします。v5使ってる人は上段v5向けのdownloadから。

microSDをセットして、SCSI2SD本体とPCをmicroUSBで接続し、「scsi2sd-util」を起動。以下のように設定していきます。(この時、debug logにfirmware versionやSDの情報が出るので、必要なら確認のこと。また、既に保存されているconfigを元にしたい場合は、[file] - [Load from device] を行う。)

f:id:aonrjp:20190618131745p:plainf:id:aonrjp:20190618131754p:plainf:id:aonrjp:20190618131755p:plain

今回は16GBのSDを挿したので、余裕を持ってSCSI ID=0に2GB、SCSI ID=1に4GB割り当てました。設定の重要ポイントは以下

  • Vendor : " SEAGATE" (1文字空白+SEAGATE=8文字)
  • product ID : " ST225N" (10文字空白+ST225N=16文字)
  • revision : "1.0 " (1.0+1文字空白=4文字)

シリアルは適当に変えて。参考は以下

Fitting a SCSI2SD in a 68k Mac - Peripherals - 68kMLA Forums

最後に[File] - [Save to device] で書き込みます。稀に途中で失敗することがあるので、その時はもう一度[Save to device]しましょう。

Macintosh SE/30への組み込み

SE/30にはHDDマウント用の金具がすでに存在する(はず)ので、3.5" HDDの幅のアダプタを使えば簡単にマウントできます。今回は2.5" SSDのスペーサを使って、貼り付けました(雑)

f:id:aonrjp:20190618131144j:plain

HFSボリューム作成

あとはインストーラからSCSIバイスを選ぶだけだ〜と思いがちですが、もう一手間必要です。MacOSインストーラからディスクを認識させるには、Apple Driver Map(Partition Map)と実体のHFSボリュームを先に作成する必要があります。ここでは、KT(漢字トーク) 6.0.7のインストーラ(システム-起動用)をFloppy Emuで読み出し、起動後にLido 7.56を起動しました。(Lidoとシステム起動用の2つのイメージを、要求されるたびにFloppyEmuでセットし直す修行。15回ぐらい入れ替えると起動する)

f:id:aonrjp:20190618132803j:plain

LidoからSCSIバイスが見えるので、インストール先にしたいSCSI(今回はSCSI 1)デバイスを選び、Easy Setupを押す。すると、アイコンを選んでダイアログに従えば「Mac Volume」が作成される。(画像は20MのSCSI0しか無いけど本当はちゃんと2つ表示される)

OSインストール

あとは、元のKT 6.0.7インストーラから、作成したMac Volumeが見えるので、インストールを行えば完了です。(FloppyEmuから入れるなら、KT 6.0.7だと4枚のディスクで終わるので楽)

f:id:aonrjp:20190618132241j:plain

Welcome to MacOS (Kanji Talk) World!!

f:id:aonrjp:20190618132812j:plain

やっと内臓HDD(もどき)からのブートができました。そんでもって、内臓HDDからブートしてFDDを読み込むと、挿入したディスクを初期化することで使えるようになりました。FDDも内臓HDDも復活したので、ひとまずMacintosh SE/30本来の姿を取り戻しつつあります!(あとはネットワークカードだけ)

Macintosh SE/30 Repair #5

FloppyEmuを使ってみた

知り合いの方(おっちゃん)にClassic Macintosh話を相談したところ、 なんとFloppyEmuが出てきました。お願いしたところ 借りすることができたので、読み込めないFDDの代わりに繋いで 起動できるか試してみましょう。

FloppyEmu

f:id:aonrjp:20190530025752j:plain

FloppyEmu本体から伸びるフラットケーブルをマザーボード上のFDD用コネクタに接続します。すると、セルフチェックが掛かった後セットするフロッピーディスクのイメージ一覧が表示されるので、セットしたいイメージを選択。今回は、System 7.5.3のインストーラーイメージを選びブートしてみます。

f:id:aonrjp:20190530030227j:plain

ʅ( ՞ਊ՞)ʃ≡ ≡ʅ( ՞ਊ՞)ʃ キエェェェェェィィィ 動いたったったったったwwwwwww

ブートできた

ブートできた!!!!!が!!!

SCSIのHDDがありませんので、肝心のOS本体をインストールできません。 アプリを起動するにしても、インストーラーディスクのイメージとアプリのディスクイメージを20往復ぐらい交互に差し替えてやっと起動するぐらいなので、やはりOSインストールは必須です...。

SCSI2SDを買う

www.itead.cc

流石にSCSIの動作品HDDを高額で買うのは、寿命的にも何とも言えないので、今回はSDカードから変換できるアダプタを購入することにしました。SCSI2SD は様々なバージョンが存在しますが、上記のものはmicroSDでかつSE/30での動作確認済みだったので、今回はこれを購入。

実際に設定を行なってOSをインスコしていきますがそれはまた次回〜

git challenge #11 に参加してきた

先週土曜日の5.18、渋谷でとあるイベントに参加してきました。

git challengeに参加

git challengeとは株式会社mixiさんが主催するイベントで、公式の説明では

ミクシィグループのエンジニア社員が出題する問題を制限時間以内に解き、獲得ポイントをチームごとに競う形式のイベントです。2名チームとなり、提示されたissueを解決していただきます。

つまり、意図的に手が加えられたリポジトリに対して問題解決をする競技イベント。

参加当日の流れ

10:00:渋谷着弾

f:id:aonrjp:20190522143151j:plain:w300

早すぎたので、受付開始までコンビニでちょっと暇つぶし。渋谷は来るたびに変貌している。

10:40:受付

mixi渋谷本社オフィスへ行って受付完了。交通費精算等を済ませたら、 mixi側が振ったチームメンバー(相方)と顔合わせ。今回はチームJuliet、そばやさんとのペアでした〜!

sobaya007.github.io

こっちがそばや氏のエントリ、みてね。

11:00:イベント説明&Tutorial

何人か遅れて来ることが判明したので、ちょっとだけゆっくり各説明が開始。 スコアボードの見方や、出題リポジトリのアクセス方法、正答判定条件など説明があったあと、 実際にチュートリアル用の課題で正解できるか確認。

お昼時:おべんと

おしゃれなお弁当を食べながら隣チーム&mixi社員さんとお話。 紐を引くと温まるテクニカルなお弁当で、みんなでモクモク会www

f:id:aonrjp:20190522144340g:plain

13:07 競技開始

いよいよ競技開始、初めの数問は割とすぐ解けるので、全参加者がサクサク進んでいきます。 同じ問題を2人で解くよりも、それぞれができる問題を進めようというプランで挑んだ。

実際に出題された問題は【禁則事項です】でした!

正直足を引っ張らないように点数貢献するぞい!の感じで解いていったので、あんま覚えてない。 ことになっている。何も言えねぇ。

16:30 競技終了

しゅーーーーりょーーーーー!!!! この時点で最後に苦戦していた問題が結局解けなかった悔しさと、すんげぇ疲れていたのを覚えている。

問題解説&LT

解説が欲しい問題をアンケートで収集され、上位の数問について実際に解説が行われました。 「あの問題はそんな秘密が隠されていたのか...!!」となる解説が多くて、スッキリする瞬間。

結果発表

なんと3チームが同点で1位、でも景品は1チーム分しかないので、一番早く解いたチームに景品が贈呈されることに。 そしてなんと、そばや氏が爆速で解きまくった結果、うちのチームJulietが1位にwwww

f:id:aonrjp:20190522150830j:plain

GitChallenge特製パーカーとメダルを頂きました!かっこいい!!!
なお、パーカーは背面には闇を感じさせるコミットグラフが描かれております。ヒエッ...

懇親会

すべてが終わった後は、渾身の懇親の会!

f:id:aonrjp:20190522151021j:plain

ぱわーを感じる。 おしゃれなご飯を頂きながら、他チームの参加者さんやmixi社員さんと楽しくお話することができました。

まとめ

競技終了後は疲れ果てて時間とかあまり覚えていませんでしたw それだけ集中して楽しめる、濃密なイベントだと思います!

問題は【禁則事項です】なので言えません

解きたい人はぜひ応募して参加しよう!!!ちなみにイベントについては、mixiさんの採用情報ページを見ておくと、次回開催時にわかるはずです。

mixi-recruit.snar.jp

ただ、参加する上で基本的なgitの知識は必須ですが、別にgitのプロである必要はないと思います。むしろ出題される内容は、「普段こういうことが起こらないように気をつけよう!!」という現象が起きている超常現象です。普段からLinuxやgitをチョット(本当の意味でのちょっと)使っている人であれば、挑戦できます。

ちなみに上記の理由から、一回しか参加できません。人生一度きりのgit challenge、ぜひみなさんもご参加を〜!

Macintosh SE/30 Repair #4

電解コンデンサの交換

CRTの破損から何とか戻ってきたMacintosh SE/30ですが、起動音がせず、たまにシマシマックが発生するのでコンデンサ交換を行うことにしました。

絶対に気をつけるポイント

とにかくマザーボードや他の部品への負荷を最小限にすることを考えましょう。

  • 出来るだけピンポイントで加熱する
  • 特に周辺に樹脂部品がある時は気をつける
  • 無理に引っ張らない
  • ハンダが溶け切らない状態で無理な力を加えるのは破壊行為

f:id:aonrjp:20190513114426j:plain

コンデンサを手に入れる

交換をするコンデンサは以下です
参考 : Macintosh SE/30

  • 47uF / 16V
  • 1uF / 50V
  • 220uF / 16V
  • 470uF / 16V

SMD(面実装部品)じゃなくても実装は可能です。耐圧も元から実装されているものと同等かそれ以上であれば問題ありません。

実装済みのコンデンサを外す

ここが最大の難関です。
ロジックボードのパターンを破壊してしまうとその後の作業が格段に増えて面倒なので、最新の注意を払いながら確実に外しましょう。

オススメはヒートガンを使うことですが、これも樹脂製のソケットやコネクタを溶かさないように注意する必要があります。コテで頑張る人は頑張って。

力をかけすぎてはいけません。部品の半田部分にフラックスなりを塗った後、加熱しながらゆっくり部品をにずらすようにすると、ある瞬間からズルッと動くようになります。
動くまでは絶対に上方向に引っ張らないように!! パターンが剥がれちゃいますよ。

f:id:aonrjp:20190513114330j:plain

部品を除去したあとは、ハンダをリフレッシュしておきましょう。コンデンサが液漏れしてることが多いと思いますので、その場合は無水エタノール等で清掃したあと、 コテを使って新しいハンダを注ぐと良いと思います。

新しいコンデンサを実装する

今回はちょうどいい面実装部品が手に入らなかったので、手持ちのリード部品で間に合わせました。

f:id:aonrjp:20190513114357j:plainf:id:aonrjp:20190513115108j:plain

リード部品を使うときは、パターンに合わせて足を曲げ、短く切りましょう。これをうまいことパターンに合わせると、いい感じに実装できます。 変な力がかからないように注意しながら、黙々と実装していきます。

f:id:aonrjp:20190513114417j:plain

起動確認

全部実装し終わったら、最後にもう一度確認したあと組み直して起動確認を行います。

おっ、起動音が鳴るようになったぞ!

雑談

この音を知り合いに聞かせると、皆口を揃えて「深イイ話やんけ」と言う。何を言っとんねんと思って、深イイ方を聴いてみたら本当にそのものだったwww

作業が先行していて、投稿がだいぶ遅れてきています。次は界隈ではよく知られる「FloppyEmu」を使った話を書くよ