投稿

Oculus Quest 2を3Dテレビで見る(改

イメージ
記述日 2023年11月30日 前回 はSteamVRアプリをTVに映す方法だったが 今回はQuest2スタンドアロンアプリをTVに映す方法 いつの間にかQuest2がAndroid12相当になったので音声転送が可能に テスト環境 映像入力:MetaQuest2 中継機:scrcpyが動作するPC(WindowsでもLinuxでもOK、Macは未確認だが多分OK) 映像出力:サイドバイサイド可能な3DTV 確認ソフト:Kizuna AI – Touch the Beat! 手順 Quest2でadbデバッグを許可する scrpcy2.x系でフルスクリーンで接続 テレビでサイドバイサイドで3D表示 TVから飛び出た TVの中のアイちゃんをTVから飛び出た棒で応援できる! テストはwsl上のubuntu22.04を使用してscrcpyを実行 標準リポジトリは1.x系なので2.x系(最新は2.3)を使うにはビルドが必要 手順は github に書いてある通りで問題はなかった wifi接続設定をするとケーブルレスで作業が捗る scrcpyには録画機能があるので録画にも使える 出力先にv4l2loopbackも選べる(Linuxのみ) 音声が付いた事でQuest2で録画なり配信なりするなら一番な方法ではないだろうか? --

WSL2でゲームパッドを使う

イメージ
記述日 2023年11月28日 WSL2でUSBデバイスを使用する方法が判ったので ここを参考に https://github.com/microsoft/WSL/issues/7747 要点は CONFIG_LOCALVERSION="-kotc9" CONFIG_INPUT_JOYDEV=y CONFIG_INPUT_EVDEV=y CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=y CONFIG_JOYSTICK_XPAD=y CONFIG_JOYSTICK_XPAD_FF=y Windows側からUSBデバイスをアタッチする前にwslを起動しておく必要がある USBデバイスのアタッチは管理者で行う※デバイスによっては管理者でなくても通るかも wsl側はlsusbやら/dev/inputやらで接続を確認 動作はjstest、evtestで確認 手持ちのコントローラであれこれ試した結果 DirectInputは使えた※F710のDirectInputモード 最初jstestとブラウザでは認識するがpygameでは認識しなくてそういうものかと諦めかけた 色々調べて入力処理方式に新旧あるのにたどり着いた SDL1.x系は環境変数SDL_JOYSTICK_DEVICEで明示的に指定すると旧式で動作する SDL2.x系は新式にか対応しないとの事 pygameは環境変数設定で認識する様になった pysdl2は認識しないのでそういう事なのだろうと諦めかけた がしかしもう少し調べた結果SDL2ではパーミッションの追加が必要との事 ユーザーをinputグループに追加した結果SDL2でも認識する様になった 諦めたらそこで終わりってのはあるんだな XInputとPS3コントローラーはUSBデバイスとしては認識されるが動作はしない ドライバーがないからと推測 適当にググって作業 $ sudo apt install xboxdrv $ sudo xboxdrv -v --no-uinput --type xbox360 --detach-kernel-driver --device-by-id 046d:c21f でF710のXInputモードでのデータが取れるのは確認 jstestを含むアプリ上で認識しないので使えな...

WSL2で音を鳴らす

イメージ
記述日 2023年11月27日 WSLで音を鳴らすのは以前に方法を確立して以降使いもせず放置してたのだがふと思い出したので現状を確認してみた 以前の記事  Pulseaudioによるリモートオーディオ どうやらWSLg導入のタイミングで正式に対応された模様 参考  WSL2上のUbuntu20.04から簡単に音声再生/録音ができた - 佐藤百貨店 (sato-susumu.com) 記事に倣って音を鳴らそうとしたらaplayがインストールされていなかった $ sudo apt install alsa-utils でインストール $ aplay /usr/share/sounds/alsa/Side_Right.wav で再生確認 自前でpulseaudioサーバーを用意しなくて済むので余計な管理コストがなくなった ネットワーク経由なのでそれ所以の問題はあるだろうけど現状は満足 Hyper-Vで使っている仮想オーディオ辺りを組み込んでもらえたら更に良くなるだろうか? 現状でwslでオーディオデバイスをフルで扱うならusbipを使う方法が考えられる 昔試した時の記憶は昔過ぎて忘れてしまったが成功ではなかったと思う 原理的にネットワーク経由以上の遅延発生と純粋に認識しない可能性 気が向いたらチャレンジするが気乗りはしない オーディオ以外のUSBデバイスを繋げたくなった時のついで程度で USB デバイスを接続する | Microsoft Learn > winget install --interactive --exact dorssel.usbipd-win 更新 2023年11月28日 現状USBデバイスを利用するにはカーネルのカスタマイズが必要 記憶にないので過去自分がusbipを使ったのは普通のubuntuでwslではなかったと思われ これを参考にして WSL2でUSBデバイスを扱えるようになっていました #WSL - Qiita 以下を組み込んだと思う※ゲームパッドのついでで作業したのでメモするの忘れた > Device Drivers > Sound card support > Advanced Linux Sound Architecture > USB sound devices <*>   ...

Raspberry pi 3B+上のRaspberry Pi OSでアクセスポイント

イメージ
記述 2023年11月6日 ラズパイをアクセスポイントにするのは過去何度か試みては失敗していたが久しぶりにやる気がでたので以下を参考に設定を行った ラズパイをアクセスポイント化、PCやスマホと直接繋ぐ方法 https://raspida.com/rpi-wifi-ap 結果はいつも通り動かなかった 内容を理解せず手順をなぞっただけで脳疲労が軽微でやる気が残っていたのでトラブルシュート開始 エラーを確認するとchannel 1が使えなくてhostapdが起動していない 以下を読んでhostapd.confの内容をなんとなく理解 ラズパイ4を5GHzのWiFi APとして起動する https://qiita.com/awesam/items/70fde5765b07783b7090 hostapd.conf 覚書 https://qiita.com/JhonnyBravo/items/5df2d9b2fcb142b6a67c 問題解決 channel 0でオート指定してみると起動はしたがwlan0は立ち上がらない ラズパイの11acではchannelは36か44しか使えないと書いてある 最初の記事はchannel 1で動いたとなっているがこれが正しいなら動かない オート指定で動かなかったのは謎だがchannel 1では確かに動いていない 結論としてchannel 36を指定する事でhostapdは正常動作する様になった 追加調査 二つ目の記事でJPの国コードでは指定できない設定と書いてある ieee80211hの設定まわりかなと推測 国コードはcountry_code=USになっている でもieee80211h=0なら機能無効なんだから勘違いをしているんじゃないかな? 最初の記事だとieee80211h=1なのでこの場合は禁足事項? こちらはcountry_code=JPなのでならieee80211h=1は機能しない? そもそもこの設定は何の為に必要なのか? 説明を読んでも良く判らんがオートチャンネルに必要? オートチャンネルを使わないなら設定そのものが不要と判断し項目を削除 自分はオートが使えないから36固定としたがcountry_code=USにしたら動くかも?(未確認) 関連 無線LANの屋外利用について https://www.tele.soumu.go.jp/...

Androidとkivyとcamera

イメージ
なんかスマホアプリ作るならカメラ使えるべきだろうと公式サンプルを動かす事にした 記述 2023年10月24日 変更 2023年11月10日 出力画像へのアクセス方法 Camera Example — Kivy 2.2.1 documentation まあ覚悟はしてたけどすんなりは動かなかった Androidで動かすにはPermission要求が必要 apk作成にbuildozerを使用しているが記述ルールが不明で辛い ググって多種多様な話を纏めてトライ&エラー 正解はUserGroupやDiscordに参加なんだろうと思う 英語の出来ないオツムなのが悪いので苦労するのは仕方ない 結果としてbuildozer.specとmain.pyの両方でPermission要求する事で動いた 本当に正しいかは判らない 動くには動いたがサンプルの画像みたいに画像は最大化されないし向きは縦横合ってない サンプルはmacっぽいのでmacなら正常動作するのか? 面白い事にWindowsSubsystemForAndroidの方は正常動作 保存した画像がappフォルダ直下でユーザーが触れないのはサンプルだからで済ます所か 動きさえすれば後はパラメータ指定すれば良いのだろうからひとまずOK adb shellでデバイスに接続してrun-asコマンドでファイル操作ができる 遥か昔にAndroidアプリを作ってみた時に使った気がする 昔過ぎて忘れてた appフォルダ直下は不便すぎるのでユーザーが触れるフォルダにしようとしたらまたひと悶着 ユーザーフォルダを取得する方法が判らない とりまplyerを使えば取れるのは確認済なのだがサンプルを大げさにしたくなかったのでハードコーディング camera.export_to_png("/storage/emulated/0/DCIM/""IMG_{}.png".format(timestr)) 共有フォルダの取得はp4aのドキュメントに書いてあった https://python-for-android.readthedocs.io/en/latest/apis/ from android.storage import primary_external_storage_path primary_ext_storage ...

Windows11とkivyとpygame

イメージ
最新環境で実行しようとしたらできなかった件 記述 2023年10月24日 python3.12でkivyをインストールしようとしたらエラー ERROR: No matching distribution found for kivy_deps.gstreamer_dev~=0.3.3 対応:python3.10にダウングレード ※既に入っていたのが3.10だっただけで3.11でもOK 実運用としては3.10と3.12の環境は共存 vscodeでインタプリター選択するなりコマンドでバージョン指定するなりしている python3.10でkivyとpygameを使おうとしたらエラー RuntimeError: Dynamic linking causes SDL downgrade! (compiled with version 2.28.3, linked to 2.26.4) 対応:pygameを2.5.2から2.4.0にダウングレード > pip uninstall pygame > pip install pygame==2.4.0 ※外部ライブラリの使用バージョンが変わるのはメジャー単位と想定して2.4.0を選択 別にこれでなければとかは無い、適当に選んでたまたま動いただけ 存在するバージョン番号は > pip install pygame== で確認 python手軽に書けてたーのしー! してるので環境依存とか依存関係とか多発して欲しくないなぁ 今回windowsは関係ないかもしれないが未確認 →Windows サブシステム for Androidではpygameのバージョン指定なしで動いた --

Windows11とpython3.12とpylsd

イメージ
windows11上のpython3.12でpylsdを使うために > pip install pylsd するとインストールは出来るがlsd()が動かない 代替として提供されている > pip install orcd-fork-pylsd をインストールしようとするとエラーがでてインストールできない ここを読むとオリジナルの不具合がfork版で修正されているらしい PyLSD 0.0.2 の修正 on Python 3.9.1 https://mitsuharua.blogspot.com/2021/02/pylsd-02-on-python-391.html しかしながらfork版がインストールできないのでオリジナルにパッチを適用 しようとしたがエラーがでてパッチが完了しなかった パッチには詳しくないのでパッチのエラー対策は諦めて パッチの内容を手作業で反映した 具体的にはlsd.pyを修正 from bindings.lsd_ctypes import * を from .bindings.lsd_ctypes import * に lsdlib.lsdGet(src, ctypes.c_int(rows), ctypes.c_int(cols), temp) を #lsdlib.lsdGet(src, ctypes.c_int(rows), ctypes.c_int(cols), temp) enc_temp = temp.encode('utf-8') cstr_temp = ctypes.create_string_buffer(enc_temp) lsdlib.lsdGet(src, ctypes.c_int(rows), ctypes.c_int(cols), cstr_temp に このファイル以外のパッチは正常に適用されていた pylsdの管理状況にもやっとはするが楽はしたいので動けばいいや論を適用する pylsdの場所はpipで確認 > pip show pylsd Name: pylsd Version: 0.0.2 Summary: pylsd is the python bindings for LSD - Line Segment Detector Home-page: https://github....