lazionote

雑記ノート

PYBv1.1でMicroPython v1.18を動かしてみた

構成

MicroPython v1.18をダウンロード

https://micropython.org/ のDOWNLOADページからPYBv1.1  https://micropython.org/download/pybv11/ のページを開き、Firmware v1.18 (2022-01-17).dfu をダウンロードした。

PYBv1.1をPCに接続

MicroPythonのfirmwareをPYBv1.1に書き込むためにはDFU(Device Firmware Update)モードで起動する必要があるらしい。

https://github.com/micropython/micropython/wiki/Pyboard-Firmware-Update

ここに書いてあるように、赤丸内の隣り合っている3.3VピンとDFUピンをジャンパ線で接続するとDFUモードで起動する。 この状態でUSBケーブルをPCに接続する。

dfu-utilをPCにインストール

firmwareをPYBv1.1に書き込むために使うdfu-utilをapt-getでPCにインストールする。

sudo apt-get install dfu-util

firmwareの書き込み

dfu-utilコマンドを以下のように実行してMicroPythonのfirmwareを書き込む。

$ sudo dfu-util --alt 0 -D pybv11-20220117-v1.18.dfu 

書き込みが完了したらPCから外し、ジャンパ線を外してから、PCに再接続する。

Ubuntu SoftwareでThonnyをインストール

Ubuntu Softwareを開いて左上にある虫眼鏡マークをクリックし、入力欄に「Thonny」を入力して探す。「Thonny Python IDE for beginners」がみつかったらインストールする。

Thonnyを最初に起動するとLanguageとInitial settingsを聞かれるので、

  • Language: 日本語
  • Initialsettings: Standard

にしてひとまず起動する。

ツール => Option... => インタプリタ を開く。

`Thonnyはコードの実行にどのインタプリタまたはデバイスを使用すればよいですか?'の選択で

MicroPython (generic)

を選ぶ。

接続するポートを選べるようになるので、Portに

Pyboard Virtua Comm Port in FS Mode (/dev/ttyACM0)

を選ぶ。

OKボタンを押すと、ThonnyのShellタブにMicroPythonのプロンプト(REPL)が表示されるはずなのだが、 /dev/ttyACM0へのアクセス権がないためエラーになり、usermodを実行するようにメッセージが表示されている。 以下のコマンドを実行して/dev/ttyACM0のdialoutグループに自分自身のユーザを追加してアクセスできるようにするようだ。

sudo usermod -a -G dialout  username

usernameにUbuntuのログインアカウント名を指定して実行。 実行した後は、ログインし直すかリブートする必要があるので、念の為リブートした。

再起動&ログインしてThonnyで接続するとREPLが表示された。 print文も動くようだ。

MicroPython v1.18 on 2022-01-17; PYBv1.1 with STM32F405RG
Type "help()" for more information.
>>>
>>> print('Hello PYBv1.1')
Hello PYBv1.1
>>> 

lifebook UH Ubuntuのサスペンドから復帰する際、ディスプレイが表示されない

はじめに

サスペンドはできて、サスペンド状態から復帰しようともしているようなんだが、ディスプレイが表示されない。

解決方法

BIOSの設定で、詳細 -> 各種設定 -> ハードウェア省電力設定 を「使用しない」にすることで表示されるようになった。

変更履歴

2022/04/09 別記事内に書いていたが、一つの記事にした。

lifebook UH タッチパッドが動かなくなった

はじめに

lifebookにインストールしたUbuntu 20.04 LTSのソフトウェア更新をしたところ、タッチパッドが動かなくなった。しばらくUSBマウスをつないでしのいでいたが解決方法がみつかった。

解決方法

askubuntu に modprobe i2c-hid-acpi で動いたという情報があった。

askubuntu.com

試したところ動いたので起動時に有効になるように/etc/modulesをi2c-hidからi2c-hid-acpiに更新した。

i2c-hid-acpi

Microbit v1でZephyr OSを動かしてみた

はじめに

MicrobitプロジェクトがリリースしているMicrobit v1ボードでZephyr OSを動かしてみた。

環境

  • ホストOS: Windows 10
  • Microbit v1ボード: Micobitのサイトでオリジナルmicro:bitと書かれているボード
  • Zephyr OS: version 2.7.99
  • GNU Arm Embedded Toolchain: 9 2020-q2-update

Zephyr開発環境構築

Zephyr 2.7.0のドキュメントGetting Started Guideを参考にして開発環境を準備する。

chocolateyをインストール

Chocolatey Softwareサイトの右上のInstall Nowボタンを押す。

Step1はOptionalなので何もしないで、Step 2のIndivisualを押す。

WindowsPowerShellを管理者で起動して、表示されている以下のコマンドをコピペして実行する。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

これでChocolateyがインストールされるようだ。 Chocolateyのバージョンは、v0.11.3だった。

chocolateyを使ってビルド用のコマンドをインストール

コマンドプロンプトを管理者で起動して以下のコマンドを実行。

choco feature enable -n allowGlobalConfirmation
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install ninja gperf python git dtc-msys2
  • cmake v3.22.1
  • ninjav1.10.2
  • gperf v3.1
  • python v3.10.1
  • git v2.34.1
  • dtc-msys2 v1.5.1

などがインストールされた。

pipが更新されているようなので最新版に更新

python -m pip install --upgrade pip

Zephyr OSのツールwestをインストール

pip3 install -U west

westツールでZephyrソースコード入手とpythonスクリプトをインストール

cd c:\
west init zephyrproject
cd zephyrproject
west update
west zephyr-export
pip3 install -r c:\zephyrproject\zephyr\scripts\requirements.txt

GNU Arm Embedded Toolchainの設定

事前にインストールしていたGNU Arm Embedded Toolchainサイトの9-2020-q2-updateを使うように環境変数を設定したバッチファイルをC:\zephyrproject\seup.batとして用意した。

set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
set GNUARMEMB_TOOLCHAIN_PATH=C:\zephyrproject\gnuarmemb-9-2020-q2-update

最初、GNUARMEMB_TOOLCHAIN_PATHには9-2020-q2-updateの標準のインストール先を指定していたが、スペース文字やダブルクォートが含まれているとwest build時にエラーになるので、9 2020-q2-updateフォルダをc:\zephyrproject\gunarmemb-9-2020-q2-updateにコピーして、環境変数もこちらを参照するようにした。

また、west buildすると、このパスの存在をc:/zephyrproject/zephyr/cmake/compiler/gcc/generic.cmakeの15行目でチェックしているようだが、ここで必ずNothing found at GNUARMEMB_TOOLCHAIN_PATHエラーになってしまうため、このチェックも以下の様にコメントアウトした。

#if(NOT EXISTS ${GNUARMEMB_TOOLCHAIN_PATH})
#  message(FATAL_ERROR "Nothing found at GNUARMEMB_TOOLCHAIN_PATH: '${GNUARMEMB_TOOLCHAIN_PATH}'")
#endif()

pyelftools をインストール

west build時にimport elftoolsが実行されるので、以下のコマンドを実行して事前にelftoolsをインストールしておく。

pip3 install pyelftools

この問題は以下のissuesにレポートされていた。

No module named 'elftools' · Issue #1392 · zephyrproject-rtos/zephyr · GitHub

Microbit用サンプルプログラム hello_worldをビルド

cd c:\zephyrproject
setup
west build -b bbc_microbit samples/hello_world

これでビルドはできるようになった。

pyOCDのインストール

プログラムをwest flashでMicrobitボードに書き込むには、pyOCDが必要らしい。

pyOCDサイトのDeveloper's guideを参考にしてインストールする。

cd c:\zephyrproject
git clone https://github.com/pyocd/pyOCD
cd pyOCD
python -m venv venv
venv\Scripts\activate
pip install -e .[test]

venv環境にてpyocdがc:\zephyrproject\pyOCD\Scripts\pyocd.exeに作成された。 このあと、venv環境のままwest flashするので、コマンドプロンプトはこの状態にしておく。

Tera Termを起動

Tera Termを起動して115200 Baud rateでMicrobitに接続しておく。

hello_worldプログラムを書き込む

venv環境にて、以下のコマンドを実行してビルドしたhello_worldプログラムをMicrobitボードに書き込む。

cd c:\zephyrproject\zephyr
west flash

書き込みが完了するとすぐに実行されて、Tera Termウインドウに以下のように表示された。

f:id:lazionote:20220110155051p:plain

Microbit用サンプルプログラム

hello_world以外のサンプルもBoard specific samplesに記載されている。 displayサンプルもMicrobit v1で動作するようなので、以下のようにビルドと書き込みをして動かしてみた。9から0へのカウントダウン表示からHello Zephyr!のスクロール表示まで、いくつかの表示がされた。

west build -b bbc_microbit samples/boards/bbc_microbit/display
west flash

変更履歴

  • 2022/01/10 新規作成

Jetson Nanoのセットアップ

はじめに

書籍「Jetson Nano超入門 改訂第2版」を参考にJetson Nano B01をセットアップした。

Jetson nanoのOS「JetPack」のダウンロード

JetPack SDKサイトからJet Pack 4.6のSD Card Imageをダウンロード。

SD Card Image Method のJETSON DEVELOPER KITをクリックして、Jetson Nano B01用のFor Jetson Nano Developer Kit:が表示されるので、このDownload the SD Card Imageをクリックしてダウンロードする。

SDメモリカードのフォーマッターをダウンロード

SD AssociationサイトのSDメモリカードフォーマッター Windows用をダウンロードしてインストールする。

このフォーマッターを使って、準備しておいた64GBのSD Cardをクイックフォーマットした。

SDカードに書き込むソフト balenaEtcher をダウンロード

balenaEtcherサイトからWindows版をダウンロードしてインストール。

SDカードにJetson Nano OSイメージを書き込み

ダウンロードしたJetson Nano Developer Kitのzipファイルを展開し、sd-blob-b01.imgをbalenaEtcherを使ってSDカードに書き込む。

Jetson Nanoの起動と設定

作成したSDカードをJetson Nano B01に差し込み、電源を入れる。

起動後のウィザードに従って設定して、再起動。

ログインするとUbuntuGUIデスクトップが立ち上がった。

Ubuntuのリリースバージョンは、18.04 LTSらしい。

ソフトウェアセンターのエラー

SDカードで無事起動できたが、デスクトップ左側Dock内のSoftware(ソフトウェアセンター)を起動したところ以下のエラーメッセージが出て正常に動いていないようだった。

Unable to download updates from "extensions.gnome.org":
[*/*/*/source/shell-extensions/*] failed to download 
https://extensions.gnome.org//static/extensions.json: 
SSL handshake failed.

Terminalを開いて、

sudo apt-get update

でパッケージ情報を更新してしばらく待っていると、Software Updaterが起動して

Updated software has been issued since Ubuntu 18.04 was released.
Do you want to install it now?

と表示されたので、Install Nowをクリックしてソフトウェアを更新した。

再起動すると先のエラーは消えて、ソフトウェアセンターは正常に動作した。

変更履歴

  • 2022/01/09 新規作成
  • 2022/01/10 OSイメージ作成のためにインストールしたソフトウェアの情報を追記。

Grubの解像度変更

はじめに

起動時のgrubメニューの文字が小さくて読みにくいので、文字を大きく表示できるようにした。

ディスプレイ解像度の調べ方

  • Grubメニューで「c」を入力すると、Grubプロンプトが表示されるので「videoinfo」と入力する。
grub> videoinfo

Lifebook WU3/F1では、以下の5つの解像度が表示された。

  • 1920 x 1080
  • 640 x 480
  • 800 x 600
  • 1024 x 768
  • 1280 x 1024

デフォルトでは、1920 x 1080の高解像度で表示されているようで、文字がかなり小さく表示される。

もう少し大きく表示されるように 1024 x 768 にする。

/etc/default/grubGRUB_GFXMODE を変更

/etc/default/grub をエディタで開き、GRUB_GFXMODEの解像度を 1024 x 768 に設定する。

$ sudo vi /etc/default/grub
GRUB_GFXMODE=1024x768

編集を「:wq」で保存した後、update-grubを実行して完了。

$ sudo update-grub

Grubが起動した時のメニューの文字が大きくなり読みやすくなった。

Lifebook UH (WU3/F1)でハイバネーション機能を動かす

はじめに

Lifebook WU3/F1でハイバネーション機能が動いたので設定情報を書いてみた。

一度swapファイルで試してみたがうまく動作しなかったので、今回はswapパーティションを利用する方法を試した。 試行錯誤した部分や詳細理解できていない部分もあるので、一部不要な設定や間違いがあるかもしれない。

環境

  • 予めswapパーティションは/dev/nvme0n1p5に作成しておいた。RAM容量と同じ32GB以上。

grubにresume用のswapパーティションUUIDを設定

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=f2f84668-9a5e-4ca2-8c40-c7c0c6afc93a"
  • update-grubを実行してgrubの設定を有効にする
sudo update-grub

initramfsを再構築

  • /etc/initramfs-tools/conf.d/resumeファイルを以下の内容で作成
RESUME=UUID=f2f84668-9a5e-4ca2-8c40-c7c0c6afc93a
  • 次のコマンドでinitramfsを再構築
sudo update-initramfs -u -k all

一般ユーザがハイバネーションを実行できる権限設定

/etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla ファイルを次の内容で作成。

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

ここまでの設定で再起動すれば、ユーザ権限でコマンドラインからハイバネーション機能を実行できるようになる。

systemctl hibernate

ハイバネーションメニューの設定

extensions.gnome.org

f:id:lazionote:20210926222156p:plain
hibernateを検索

  • 検索したextensionの「System Action - Hibernate」をクリックすると、「System Action - Hibernate」の詳細ページが表示され、右側に「OFF」とボタン表示されている。

f:id:lazionote:20210926222336p:plain
system action - Hibernate

  • 「OFF」ボタンを押して「ON」にする。すると、「拡張機能をインストール」するダイアログが表示される。

f:id:lazionote:20210926222404p:plain
拡張機能をインストール

  • 「インストール」ボタンを押すと、「System Action - Hibernate拡張機能がインストールされて「ON」になる。

  • 右上のメニューを確認して、「サスペンド」の次に「Hibernate」が追加されていればOK。

f:id:lazionote:20210926222550p:plain
hibernateメニュー

まとめ

参考文献

変更履歴

  • 2021/10/01 用語をハイバネートからハイバネーションに統一した。
  • 2021/10/19 参考文献のリンクがうまく動いていなかったので修正した。
  • 2022/04/09 タイトルを変更した。