Ojisankoubou のABP-3 を購入したが、普段 Ubuntu で作業をしているので Win PC を立ち上げるのが面倒なので、Ubuntu 上で wine を使用して測定できないかと検討し, 起動させる事ができた時の覚え書き
Install 環境
Ubuntu 17.04CPU Core i5-7600
Chiset H270
wine 2.19-devel
APB-3 PC 20170917
FPGA 12091415
Ubuntu 上の wine で APB-3.exeを動作させる為の注意点
a. wine用 libftd2xx access wrapper である ftd2xx.dll.so の compile をする為にの i386 library が /wineroot/lib32 になってる必要がある
install した wine は i386 library directory が /wineroot/lib など lib32以外の
名前になっており、その場合は ln -s lib lib32 などで link を張ること
(Install作業 1 の真ん中あたり参照)
b. APB-3 の通信は /dev/ttyUSB? を通して行なっているわけではなく、 libftd2xx を介して
行なっている, しかし APB-3を PC に接続した時に /dev/ttyUSB? に attach され wine 上の
APB-3から access が排他される為 /dev/ttyUSB? を unbind する必要がある
/etc/udev/rule.d に unbind する rule を追加
(Install作業 6 を参照 )
Hierarchy
+----------------------------------------------------------------------+| APB-3.exe tool (Ojisankoubou) app C# | APB-3 tool
+----------------------------------------------------------------------+
| FTD2XX_NET (FTDI corp) C# .net wrapper | APB-3 付属の物を使用
+----------------------------------------------------------------------+
| WINE | 1, 2, 3
+----------------------------------------------------------------------+
| ftd2xx.dll.so (linux) linux ftd driver wrapper | 4, 5x
| include the libxftd2xx.a |
| (FTD2XX (FTID corp, win) ftdi driver の代り) |
+----------------------------------------------------------------------+
| kernel, udeve (Ubuntu 17.04) | 6
+----------------------------------------------------------------------+
| APB-3 本体 (FT232H device) |
+----------------------------------------------------------------------+
%
Install 作業
1. ubuntu に wine を install する 2.19(201710190時の develop版)
wineの root は "/opt/wine-devel" になるsudo apt-get install libx11-dev:i386 libfreetype6-dev:i386
wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
sudo apt-get update # (20171206追記)
sudo apt-get install --install-recommends winehq-devel
sudo apt-get install -o Dpkg::Options::="--force-overwrite" --install-recommends winehq-devel (Ubuntu17.10 では "/lib/udev/hwdb.d/20-sane.hwdb" が lock されていて errorになるので overwrite option を付ける 201803030追記)
sudo ln -s /opt/wine-devel/lib /opt/wine-devel/lib32
# (ftd2xx.dll.so を compile する時に */lib32 を見ている)
msgothic.ttc を copy もしくは、 類似 font を /opt/wine-devel/share/wine/fonts copy
同 versionの soruce を取ってきて wine-x.xx/include を /opt/wine-devel/. にcopy
git clone git://source.winehq.org/git/wine.git
cp wine.git/include /opt/wine-devel/.
(正確には同一 verison ではない)
もしくは
https://dl.winehq.org/wine/source/ から tar.gzを取る
cp wine-x.xx/include /opt/wine-devel/.
2. wineの working directory の作成 (通常各自の home の下)
WINEARCH=win32 WINEPREFIX=~/.wine winecfg # (bashで)(201803030追記 root で実行, 一版 user では libwine.so.1 が
Operation not permitted になる)
3. winetricks を入れる (app, dllなど入れる場合に必要、 今回特に使わない)
apt-get install winetrickswget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
# apt-get は wget のが使えない場合
4. ftd2xx.dll.so の install (wine側の ftdi wrapper)
sudo apt-get install binutils:i386 # (必要かどうか忘れた)https://github.com/brentr/wineftd2xx からすべての file を copy
git clone git://github.com/brentr/wineftd2xx
Makefile に wine includeの場所の指定する
(通常は winedllpath で解決できるはず)
CFLAGS = -g -O0 -Wall -I/opt/wine-devel/include # "-Iうんたら" を追加
make # FTDIより libftd2xx.1.1.12.tar.gz を取ってくるが後で置き換える
FTDI site (http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx-i386-1.4.6.tgz)
とってくる置き換える
wget http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx-i386-1.4.6.tgz
tar xvfz libftd2xx-i386-1.4.6.tgz release/build/libftd2xx.a
mv release/build/libftd2xx.a libftd2xx1.1.12/build/i386/.
rm -rf release
# compile
make
install
sudo cp ftd2xx.dll.so /opt/wine-devel/lib/wine/.
sudo cp libftd2xx.def /opt/wine-devel/lib/wine/.
参考資料
http://gatopeichs.blogspot.jp/2012/10/usb-d2xx-driver-for-wine-on-linux.html
5x. libd2xx_table の compile (特に必要なし, もし必要になれば)
git clone git:/github.com/psi46/HDItestcd HDItest/FTDI-1.0.4/libftd2xx1.0.4/lib_table
Makefile の compile, link option に -m32を追加
("CC = gcc" を "CC = GCC -m32" とした)
make
6. /etc/udev/rule.d に APB-3 接続時の /dev/ttyUSB? を unbind する rule を追加
cat <<EOF > 45-ftdi-APB3.rules# unbind the ttyUSB? device, if the APB-3 measurement is pluged to PC
#
### ATTRS{idVendor}=="0403",ATTRS{idProduct}=="6014"
SUBSYSTEM=="usb",ACTION=="add",ATTRS{product}=="APB-3 ver.3 Ojisankoubou",RUN+="/bin/sh -c 'echo -n %k > /sys/bus/usb/drivers/ftdi_sio/unbind'"
EOF
sudo cp 45-ftdi-APB3.rules /etc/udev/rule.d/.
rm 45-ftdi-APB3.rules
sudo udevadm control --reload-rules
7. APB-3.exeの起動
APB-3 の usbを接続する (もちろん APB-3電源を投入)wine APB-3.exe
(201803030追記 root で実行, 一版 user では libwine.so.1 が
Operation not permitted になる)
その他の事項
### debug 時に使用した tool など
WINEDEBUG=+loaddll wine APB-3.exe 2>&1 # loadされた dllを表示
WINEDEBUG=+dll wine APB-3.exe 2>&1 # DLL accessを表示
WINEDEBUG=+ntdll wine APB-3.exe 2>&1 # DLL fileに関する表示
# loadしようとして load できなかった access も表示
udevadm monitor --env --subsystem-match=usb # USB の probe/unprobe の確認
### wine の削除 (201803030追記)
sudo apt-get install --install-recommends winehq-develsudo apt-get remove wine-\*
sudo apt-get purge wine wine-\*
audo apt-get autoremove