SeeedStudio ReComputer
Odyssey X86J4105 を使ってみた


目次

ベンダ資料


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

機体のセットアップ

基本的に User Manual に記載の通りに組めば良い。

筐体
専用ケースが売切れだった。12cm CD のケースのサイズがちょうどよさそうだったので加工して取り付け。
二次記憶
KIOXIA M.2 Type2280 SSD 500GB EXCERIA NVMe SSD SSD-CK500N3/N
WiFIアンテナ&RTC電池
附属のものを取り付けて筐体に貼り付け
電源
附属の 12V 2A アダプタ
ユーザ インターフェース
テキトーな HDMI Monitor
テキトーな USB Hub
テキトーな USB Keyboard
テキトーな USB Mouse

注:Arduino互換マイコンを利用するなら、ここでまずファームの書換をしておいた方がいいかも


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

OSのインストール

Ubuntu 20.04.1 LTS (Focal Fossa) Desktop をインストールした。 特にトラブルなし。 そのへんのインストール解説のとおりでサクッといけると思う。

必要なツール等をインストール。以下、備忘メモ。

ssh
sudo apt install net-tools
sudo apt install ssh
sudo vi /etc/ssh/sshd_config
sudo service restart ssh
                                                                

ntp
sudo apt install ntp
sudo vi /etc/ntp.conf
sudo service restart ntp
ntpq -p
                                                                

rsyslog
# syslog server にするので
sudo apt install rsyslog
sudo vi /etc/rsyslog.conf
sudo service rsyslog restart
sudo vi /etc/logrotate.d/rsyslog
sudo service logrotate restart
                                                                

rc.local
# 古い人なので起動スクリプトに rc.local を登録
sudo touch /etc/rc.local
sudo chmod 755 /etc/rc.local
sudo vi /etc/systemd/system/rc-local.service
sudo systemctl enable rc-local
                                                                

参考にしたサイト


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

待機電力の測定

サンハヤトの実験用電源で 12V を供給、その表示電流を確認。 Desktop稼働、特にアプリなど起動していない状態で、 だいたい 0.24A、ときどき 0.36A 程度 ⇒ 3〜5W 程度。


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

Xilinx ライセンスサーバ化

Odyssey を常時稼働させて軽量サーバを全て任せたいので、 Xilinx license server を立てる。

lmgrd
sudo apt install lsb-core # ← コレにたどりつけなくてハマった

# ライセンスマネージャ用の仮想ユーザを作成
LMUSER=flexlm
sudo adduser --system --group --no-create-home $LMUSER

# /usr/tmp が無かったら /var/tmp か /tmp にシンボリックリンク
if [ ! -e /usr/tmp ] ; then sudo ln -s /var/tmp /usr/tmp ; fi

# ログファイルの準備
LMLOGDIR=/var/log/flexlm
sudo mkdir $LMLOGDIR
sudo chown $LMUSER $LMLOGDIR
sudo chgrp $LMUSER $LMLOGDIR
sudo chmod g+w $LMLOGDIR
vi /etc/logrotate.d/flexlm

# FLOATING LISENCEを取得
sudo cp 〔ライセンスファイル〕 /opt/Xilinx
# lin_flxlm_V11.14.1.0.zip をダウンロードしてくる
cd /opt/Xilinx
sudo unzip lin_flxlm_V11.14.1.0.zip
sudo chown -R $LMUSER linux_flexlm_v11.14.1.0
sudo chgrp -R $LMUSER linux_flexlm_v11.14.1.0
cd /opt/Xilinx/linux_flexlm_v11.14.1.0/lnx64.o
sudo chmod +x lmgrd lmgrd.sh lmutil xilinxd

# readme.txt と lmgrd.sh を参考に起動スクリプトを作成
#  → 例  start_flexlm.sh

# 起動スクリプトを起動時実行にする
vi /etc/rc.local
                                                                  

参考にしたサイト


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

Bluetooth Serial 通信の試行

Odyssey と外部機器の Bluetooth Serial 通信のテスト。 相手はテキトーな Bluetooth Serial デバイスということで、 Microchip RN42-I/RM を搭載した いずみ研的魔改造ミニ四駆 を使った。 魔改造ミニ四駆からタイマー値や入力ポート値などを定期的にSerialで送付し、 それを Odyssey 側で表示する。

これができたので、ArduinoでもFPGAでもテキトーな何かにRN42をつけて UART でやりとりして制御できるやね。

YouTube YouTube

Bluetooth Serial 通信の例
BTADR=01:23:45:67:89:AB # example ... address of target device

sudo apt update
sudo apt install bluetooth
sudo apt install bluez
sudo apt install screen

sudo hciconfig
sudo hciconfig hci0 down
sudo service bluetooth restart
sleep 10
sudo hciconfig hci0 up

sudo hcitool scan
sudo l2ping -c 4 $BTADR
sudo hcitool info $BTADR

bluetoothctl list
bluetoothctl show
bluetoothctl --timeout 10 scan on
bluetoothctl info $BTADR

sodo sdptool browse
sudo sdptool records $BTADR
sudo sdptool search SP

N=1 # rfcomm port number
sudo rfcomm bind $N $BTADR
sudo rfcomm -a
# sudo stty -F /dev/rfcomm$N 115200 cs8
# sudo cat /dev/rfcomm$N
sudo screen /dev/rfcomm$N 115200
 C-a k
sudo rfcomm release $N
                                                                

参考にしたサイト


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

SwitchBot の制御

Odyssey を常時稼働の軽量サーバとしておくのはいいとして、 計算マシンは普段は電源を切っておいて必要な時だけ起動したい。 「物理的にスイッチを押す」デバイスにつないでこれを制御すれば リモートで電源オンができる! そこで、SwitchBotという デバイスを接続して制御してみる。

(2021.9 更新) hcitool lescan が効かない。もしかして Ubuntu kernel の問題かも。 bluetoothctl で確認することにする。

(2021.9 更新) OpenWonderLabs さんの switchbot.py を 使うのに当初 Python2 でハマったが、ようやく Python3 に移植した。 結局 gatttool を起動して 'char-write-cmd 0x0016 570100' 等のコマンドを送ってるだけなので、 アドレスとコマンドさえわかればどうにでもなる。 …と思って本家の git 見たら py3 版コード出てるやん… ここの switchbot_py2topy3.py でいけるわ。 ということで python3 switchbot_py2topy3.py で書き直し。

(2022.9 追加) RoButtonのAPIを使うとパスワードをかけられるらしい。(thanks to Osana-sensei)

動作の様子

YouTube YouTube

SwitchBot 制御の例
SWBT=01:23:45:67:89:AB # example ... SwitchBot bluetooth address

sudo apt update
sudo apt install bluez

sudo apt install python3-pip
sudo apt install libbluetooth-dev
sudo apt install libboost-python-dev
sudo apt install libboost-thread-dev
sudo apt install pkg-config python3-dev
sudo apt install libglib2.0-dev

# other packages which might be required
# sudo apt install libusb-dev
# sudo apt install libdbus-1-dev
# sudo apt install libudev-dev
# sudo apt install libbluetooth3-dev
# sudo apt install libboost-all-dev 
# sudo apt install libreadline-dev
# sudo apt install libical-dev
# sudo apt install python-pexpect
# sudo apt install python-dev

sudo python3 -m pip install bluepy
sudo python3 -m pip install pybluez
sudo python3 -m pip install gattlib

# dirty care for trouble in installing pybluez/gattlib
#? cd /usr/lib/*-linux-gnu*
#? sudo ln -s libboost_python37.a libboost_python-py34.a
#? sudo ln -s libboost_python37.so libboost_python-py34.so
#? sudo apt list --upgradable

# check the status of bluetooth I/F
hciconfig
sudo hciconfig hci0 down
sudo service bluetooth restart
# sudo service dbus restart # for raspberry pi
sleep 10
sudo hciconfig hci0 up

# sudo hcitool lescan # depends on Ubuntu kernel?

bluetoothctl list
bluetoothctl show
bluetoothctl --timeout 10 scan on
bluetoothctl info $BTADR

echo 'do pairing with the devices in desktop GUI menu'

# gatt
gatttool -b $BTADR -t random --primary
gatttool -b $BTADR -t random --characteristics
gatttool -b $BTADR -t random --char-desc

# SwitchBot
sudo apt install git
git clone https://github.com/OpenWonderLabs/python-host.git
cd python-host

sudo python3 ./switchbot_py2topy3.py
sudo python3 ./switchbot_py2topy3.py $SWBT Bot Press

スマホから (Bluetooth 直接ではなく) 公衆回線経由の VPN, SSH 経由で研究室の計算マシンの電源オン⇒起動ができた!

YouTube

参考にしたサイト


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

ラズパイ風GPIOの動作確認

GPIOに何かをつないで入出力したくなるやん。まずはLチカする。 テキトーに部品集めてブレッドボードに LED点灯回路を組む。 テキトーな LEDモジュール を買ってきてもいいし。

何の問題もなくサクッとできた。 取りあえず、低速なインターフェースならなんでもつなげられそうである。

YouTube


ラズパイ風GPIOの動作確認の例
# LED回路と 5V, GND, GPIO341 を接続
cd /sys/class/gpio
echo 341 | sudo tee export
cd gpio341
echo out | sudo tee direction
echo 1 | sudo tee value
echo 0 | sudo tee value
                                                                      

参考にしたサイト


SeeedStudio ReComputer Odyssey X86J4105 を使ってみた

Arduino互換マイコンの動作確認

ボード上に Arduino Zero互換マイコン(SAMD21)が載ってるらしい。 ちょっとした制御・入出力にArduinoを多用する人にはありがたい、 単にGPIOとしてだけではなく、計測・処理・制御のループをまるっと任せられるし。

しかし、使ってみようとしたらドハマりした。 マイコン側のファームと Arduino IDE のボードライブラリのバージョンの相性が悪いと、 マイコン側のファームがトラブって /dev/ttyACM0 が見えなくなるらしい。 なんじゃそりゃ。 そうなってしまったら、マイコン(SAMD21)のファームの書換をしなければならない。後述。
YouTube


マイコン側ファームウェアの書き換え

参考にしたサイト


2021.9.7   2020.10.13   いずみ立命館大学 理工学部 電子情報工学科