ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2025年9月18日木曜日

linux-gpibパッケージをインストールした際にpython-bindingがインストールされていればPyVISAは不要なはず。

 題目の通り。

前回のような手順できちんとlinux-gpibパッケージでpython-bindingがインストールできていれば以下で行けるはず。


  1. import gpib
  2. import time
  3. from datetime import datetime
  4. device = gpib.dev(0, 5)
  5. gpib.timeout(device, gpib.T10s)
  6. log_file = "measurement_log.csv"
  7. with open(log_file, "w") as f:
  8.     f.write("Timestamp,Voltage\n")
  9. try:
  10.     while True:
  11.         gpib.write(device, "MEAS:VOLT?\n")
  12.         response = gpib.read(device, 100).decode().strip()
  13.         timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
  14.         with open(log_file, "a") as f:
  15.             f.write(f"{timestamp},{response}\n")
  16.         print(f"{timestamp} -> {response} V")
  17.         time.sleep(1)
  18. except KeyboardInterrupt:
  19.     print("測定を中断しました。")
  20. finally:
  21.     gpib.close(device)
  22.     print("GPIBデバイスを閉じました。")


12行目で.decode().strip()をつけないかたち,すなわち


gpib.write(device."*IDN?\n")
print(gpib.read(device, 100))

としてしまうと,結果が,

b'HEWLETT-PACKARD,34401A,0,1.0\n'

みたいになってしまう。なので,

print(gpib.read(device, 100).decode().strip())

とすれば

HEWLETT-PACKARD,34401A,0,1.0
と返ってくる。

よく使う関数をまとめておく。

関数説明
gpib.dev(board_index, pad)デバイスハンドルを取得
gpib.write(device, command)コマンド送信
gpib.read(device, length)応答読み取り
gpib.close(device)デバイスを閉じる
gpib.timeout(device, value)タイムアウト設定(例: gpib.T10s

2023年3月14日火曜日

x11vncをXubuntu20.04にインストールし,windowsのrdpやmacの画面共有のようにディスプレイに表示された画面をそのままコントロール

 Ubuntuにx11vncを入れる場合は,lightdmをインストールして云々とやる必要があるが,xubuntuはそもそもlightdmなのでその必要がない。


x11vncをインストールした後,パスワードファイルを生成する。


$ sudo x11vnc -storepasswd /etc/x11vnc.pass

[sudo]  <username> のパスワード: 

Enter VNC password: 

Verify password:    

Write password to /etc/x11vnc.pass?  [y]/n y

Password written to: /etc/x11vnc.pass


その後,自動起動のためのファイルを作成。


~$ sudo vi /etc/systemd/system/x11vnc.service



内容はこんな感じ


~$ more /etc/systemd/system/x11vnc.service 

[Unit] 

Description=Start x11vnc at startup. 

After=multi-user.target

[Service] 

Type=simple 

ExecStart=/usr/bin/x11vnc -auth guess -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -xkb -loop -shared -repeat -rfbport 5900 -o /var/log/x11vnc.log


[Install] 

WantedBy=multi-user.target


起動はsystemctlで。

自動起動するためには,systemctlでenableを指定。


$ sudo systemctl enable x11vnc

Created symlink /etc/systemd/system/multi-user.target.wants/x11vnc.service → /etc/systemd/system/x11vnc.service.


無事リンクが貼られて自動起動の準備ができた模様。

確認する。

$ ls -l /etc/systemd/system/multi-user.target.wants/

合計 0

lrwxrwxrwx 1 root root 40  3月 14 18:48 ModemManager.service -> /lib/systemd/system/ModemManager.service

lrwxrwxrwx 1 root root 42  3月 14 18:48 NetworkManager.service -> /lib/systemd/system/NetworkManager.service

lrwxrwxrwx 1 root root 35  3月 14 18:48 anacron.service -> /lib/systemd/system/anacron.service

lrwxrwxrwx 1 root root 40  3月 14 18:48 avahi-daemon.service -> /lib/systemd/system/avahi-daemon.service

lrwxrwxrwx 1 root root 45  3月 14 18:48 blueman-mechanism.service -> /lib/systemd/system/blueman-mechanism.service

lrwxrwxrwx 1 root root 41  3月 14 18:48 console-setup.service -> /lib/systemd/system/console-setup.service

lrwxrwxrwx 1 root root 32  3月 14 18:48 cron.service -> /lib/systemd/system/cron.service

lrwxrwxrwx 1 root root 40  3月 14 18:48 cups-browsed.service -> /lib/systemd/system/cups-browsed.service

lrwxrwxrwx 1 root root 29  3月 14 18:48 cups.path -> /lib/systemd/system/cups.path

lrwxrwxrwx 1 root root 33  3月 14 18:48 dmesg.service -> /lib/systemd/system/dmesg.service

lrwxrwxrwx 1 root root 39  3月 14 18:48 grub-common.service -> /lib/systemd/system/grub-common.service

lrwxrwxrwx 1 root root 48  3月 14 18:48 grub-initrd-fallback.service -> /lib/systemd/system/grub-initrd-fallback.service

lrwxrwxrwx 1 root root 38  3月 14 18:48 irqbalance.service -> /lib/systemd/system/irqbalance.service

lrwxrwxrwx 1 root root 38  3月 14 18:48 kerneloops.service -> /lib/systemd/system/kerneloops.service

lrwxrwxrwx 1 root root 38  3月 14 18:48 lm-sensors.service -> /lib/systemd/system/lm-sensors.service

lrwxrwxrwx 1 root root 47  3月 14 18:48 networkd-dispatcher.service -> /lib/systemd/system/networkd-dispatcher.service

lrwxrwxrwx 1 root root 36  3月 14 18:48 ondemand.service -> /lib/systemd/system/ondemand.service

lrwxrwxrwx 1 root root 36  3月 14 18:48 pppd-dns.service -> /lib/systemd/system/pppd-dns.service

lrwxrwxrwx 1 root root 36  3月 14 18:48 remote-fs.target -> /lib/systemd/system/remote-fs.target

lrwxrwxrwx 1 root root 33  3月 14 18:48 rsync.service -> /lib/systemd/system/rsync.service

lrwxrwxrwx 1 root root 35  3月 14 18:48 rsyslog.service -> /lib/systemd/system/rsyslog.service

lrwxrwxrwx 1 root root 41  3月 14 18:48 secureboot-db.service -> /lib/systemd/system/secureboot-db.service

lrwxrwxrwx 1 root root 52  3月 14 19:04 snapd.aa-prompt-listener.service -> /lib/systemd/system/snapd.aa-prompt-listener.service

lrwxrwxrwx 1 root root 42  3月 14 18:48 snapd.apparmor.service -> /lib/systemd/system/snapd.apparmor.service

lrwxrwxrwx 1 root root 44  3月 14 18:48 snapd.autoimport.service -> /lib/systemd/system/snapd.autoimport.service

lrwxrwxrwx 1 root root 44  3月 14 18:48 snapd.core-fixup.service -> /lib/systemd/system/snapd.core-fixup.service

lrwxrwxrwx 1 root root 58  3月 14 18:48 snapd.recovery-chooser-trigger.service -> /lib/systemd/system/snapd.recovery-chooser-trigger.service

lrwxrwxrwx 1 root root 40  3月 14 18:48 snapd.seeded.service -> /lib/systemd/system/snapd.seeded.service

lrwxrwxrwx 1 root root 33  3月 14 18:48 snapd.service -> /lib/systemd/system/snapd.service

lrwxrwxrwx 1 root root 31  3月 14 19:21 ssh.service -> /lib/systemd/system/ssh.service

lrwxrwxrwx 1 root root 44  3月 14 18:48 systemd-resolved.service -> /lib/systemd/system/systemd-resolved.service

lrwxrwxrwx 1 root root 36  3月 14 18:48 thermald.service -> /lib/systemd/system/thermald.service

lrwxrwxrwx 1 root root 31  3月 14 19:04 tlp.service -> /lib/systemd/system/tlp.service

lrwxrwxrwx 1 root root 42  3月 14 18:48 ua-reboot-cmds.service -> /lib/systemd/system/ua-reboot-cmds.service

lrwxrwxrwx 1 root root 44  3月 14 18:48 ubuntu-advantage.service -> /lib/systemd/system/ubuntu-advantage.service

lrwxrwxrwx 1 root root 31  3月 14 18:48 ufw.service -> /lib/systemd/system/ufw.service

lrwxrwxrwx 1 root root 47  3月 14 18:48 unattended-upgrades.service -> /lib/systemd/system/unattended-upgrades.service

lrwxrwxrwx 1 root root 36  3月 14 18:48 whoopsie.service -> /lib/systemd/system/whoopsie.service

lrwxrwxrwx 1 root root 42  3月 14 18:48 wpa_supplicant.service -> /lib/systemd/system/wpa_supplicant.service

lrwxrwxrwx 1 root root 34  3月 14 20:14 x11vnc.service -> /etc/systemd/system/x11vnc.service


ちゃんと一番最後にいる。

ここで気付いたのですが,先ほどつくったx11vnc.serviceファイルは/etcじゃなくて/libの下に作るべきだったのかもしれません。










2022年12月6日火曜日

Apple siliconのNI488.2ドライバが一向に開発される気配がないのでLinuxにもどろうか(事前調査)

 2022年12月時点で,NIがmacOSはx84_64しかサポートしていないので,intel mac を新品で買えない現状では研究室の維持が難しくなってしまう。


さらに,最近のmacOSではウインドウをアクティブにしておかないと,処理が遅くなるようなので,これも測定に悪影響を及ぼす恐れがある。

うっかり測定用プログラムが走っているウインドウ以外をクリックしてしまったりすると,測定プログラムがアイドル状態とみなされてしまうのだろう。


LinuxからmacOSに移った理由の一つが,VNCでのぞいたり場合によっては測定条件を変更したりしたいから。

RDPやmacの画面共有(これは所詮VNCだけど)と違って,サーバ側をLinuxにしてVNC接続すると,別のXが立ち上がるようになっている(複数人で使えるように)。

しかし,測定で使用する場合,今まさにディスプレイで表示しているものをそのまま表示して欲しいので,それではちょっと困る。


しかし!最近救世主のようなVNCサーバに出会えた。

X11VNCとかいうやつらしい。

VNC用のパスワードを発行して,現在デスクトップで表示されているものをそのまま共有できるらしい。

そこらへんにころがっているちょっと古いDOS/V機で十分いける!


そこで,ひさびさにLinux-GPIBのウェブサイトを覗いてみる。

すると,

The 4.x.x and later series kernels are also supported by the packages in the linux-gpib for 3.xx and 2.6.x kernels folder.
The latest stable release (linux-gpib-4.3.5) has been tested on linux version 5.19.0-rc7 from kernel.org 

と書いてある。

先日入れたxubuntu22.04のカーネルを調べるために,uname -rしてみると,5.15.0-56-genericとのこと。


条件的には大丈夫そう。

でもなるべくコンダラひきたくない。


これも続きは後日。








2022年11月30日水曜日

Linuxにmusrfitをインストール(令和版)part 1

 mac上のmusrfitに多少の不安があるので、今後のことも考えてlinuxでも実行できるようにしておくことにした。

 

まずはテストとして10年おちのCeleronマシンにインストール。

Scientific Linux7.9で動いているので、ここにインストールしようとしたのだが、cmakeやコンパイラのバージョンが古すぎてインストールできないという困難に直面。 

重いコンダラ引きたくないので、この際OSからインストールし直し、うまく動いたら新しいラップトップに入れ直すことにした。

 

ディストリビューションの選択は、centos系だとhdf4がインストールできないことはわかっていて、nexusやらでつまずくのが嫌なので、apt系。

すると自ずとLubuntuかXubuntu。

ねずみで癒やされたいのでなれているのでxubuntuに。

現在のバージョンは20.04.1。インストールUSBをwindows PCからunetbootinで作成。

対象のPC、BIOSでUSB drive起動の優先順位をあげて、差し込んで再起動。

インストールはあっというま。

再起動しゴニョゴニョしていると、22.04にアップグレードするかと聞かれる。

頭の片隅にコンダラがちらつくが、調子に乗ってアップグレード。


まずはPSIウェブサイトの指示にしたがいインストール。


$  apt-get install git cmake libboost-dev libboost-filesystem-dev libboost-system-dev libgsl-dev libfftw3-dev libxml2-dev qt5-default qtbase5-dev libqt5svg5-dev


ただし、qt5-defaultというパッケージはないと怒られる。

qtbase5などは問題なく入るので、もし名前が変わっているのならきっと必要パッケージとしてどこかで入るだろうと甘く見て次へ進む。

次が問題のhdf4と5。


$ apt-get install libhdf4-dev libhdf5-dev

 

 問題なくインストール。

つづいてnewxus

$ cd Downloads
$ mkdir nexus
$ cd nexus
$ git clone https://github.com/nexusformat/code.git
$ mkdir build
$ cd build
$ cmake -DENABLE_HDF5=1 -DENABLE_HDF4=1 -DENABLE_MXML=0 ../code
$ cmake --build ./ --clean-first
$ sudo make install

 

こちらも問題なくオッケー。

つづいてroot。

説明を見ると、$HOME$/Appsにインストールするようになったようだ。

まぁ、このご時世複数人でPCを共有することもなかろうと、指示通りに。

まずは必要パッケージのインストール。


$ apt-get install libx11-dev libxft-dev libxpm-dev libxext-dev

特に問題なし。

続いてroot。

途中の"git tag -l"によると、現時点でのバージョンはv6-26-10なので、それに合わせて。

 

$ cd $HOME
$ mkdir Apps
$ cd Apps
$ git clone http://github.com/root-project/root.git
$ cd root
$ git tag -l
$ git checkout -b v6-26-10 v6-26-10
$ mkdir root_build
$ cd root_build
$ cmake ../ -Dgminimal=ON -Dasimage=ON -Dmathmore=On -Dminuit2=ON -Dxml=ON -DCMAKE_INSTALL_PREFIX=../root_exec
$ cmake --build ./ --clean-first
$ make install

 

 Celeronのせいか、異常に時間がかかる。

ながくなったので続きは次回。

 

 


2022年8月29日月曜日

ParallelsClientを用いてLinuxのデスクトップをxrdpでmacOSから遠隔操作(追記あり)

 macOSからwindowsを遠隔操作する際は,Parallels Crientを使うとスピードの面でもキーボード配列の面でも良いので使っていました。

一方でmacOSからlinuxに繋ぐときは,XDMCPやVNCを使っています。

しかし,終了の仕方,起動の仕方にノウハウがありちょこちょこ変なことが起こったりするので,どうにかならないかと思っていました。


最近,xrpdについての記事をちょこちょこ見かけるようになったので,もしかしたらlinuxサーバもrdpを使うとmacから操作できるのではないかと思い,やってみました。


とりあえず私の環境は,古いのですがLinuxのサーバ側はScientificLinux7.9で,クライアントはmacOS BigSur。Montereyでも試しましたがほとんど一緒でした。

Linux側は多分CentOSでも一緒で,RedHat系のディストリビューションならきっとどれも同じでしょう。

Linux側へのxrdpのインストールは色々なところに情報がありますが,vncサーバのインストールも必要なようです。私は元々tigervncを入れてあったのでそこは意識することはありませんでした。


あとは,systemctlでxrdpを起動すれば何もせず接続できました。

# systemctl start xrdp

もし自動起動させたければ,

# systemctl enable xrdp


macからの接続は,Parallels Clientを起動し,新規接続から,標準RDPを選びます。

特に設定する項目はなく,サーバーのところにLinux側のIPアドレスを入れるだけでオッケー。
フレンドリ名は自分が見分けられる単純な名前にすれば良いようです。

ここまでの設定が済むと,そのまま接続すると認証エラーという画面が出てちょっと気分が悪いです。
これはおそらく接続する時にユーザ名とパスワード情報を同時に送信しているからだと思います。
これをログイン画面と解釈してLinux側のユーザ名とログイン名を入れれば何の問題もなくLinux側へログインができます。
認証エラーと言われることがあまり気持ち良くないのであれば,Parallels Client側の詳細設定でユーザ名とパスワードをあらかじめ入れておけばオッケーです。
ParallelsClientのトップ画面で,先程設定した接続を右クリックすると(私はすでにいくつか接続を設定してしまっていますが)
『自動ログイン』にチェックを入れていなくても私の場合上記の認証エラー画面がでます。
ここでLinux側のユーザ名とパスワードをあらかじめ入れておけば認証エラー画面が出ずに,そのままLinux側の画面が出ます。

ここで表示されるデスクトップは,ディストリビューションデフォルトのもので,デスクトップマネージャーのようなものが表示されないので,sessionを選択することなどができませんが,おそらく設定でどうにかできるとは思いますが,それはまた今後。

2022/08/31追記
バージョン19から新規接続の画面が以下のように変わり,デフォルトの設定だとなぜか接続できなくなります。
いくつか試した結果,デフォルトだとRetinaディスプレイのとんでもない解像度で接続に行ってしまいエラーになるようですので,接続前にディスプレイの解像度をたとえば1920x1080などに変えておくとエラーなく接続できるようです。

まず,新規接続は以下の画面でIPアドレスを入れるのではなく,左下にある『代替RDP接続を作成』から進みます。

すると以下の画面になるのでここでLinuxサーバ側のIPアドレスを入れます。
フレンドリ名は多分なんでもいいと思います。


詳細設定画面で,以下のように解像度をおさえめにするとうまく接続できるようです。














2018年9月18日火曜日

ASUSのE200HというネットブックにXubuntuを入れてみた

ASUSのネットブック,E200HにXubuntuをインストールしてみました.
やり方をgoogle先生に聞いて,考えた結果,私はMacでXubuntuのarm64向けisoイメージをダウンロードしてきて,UNetbootinでインストールUSBフラッシュメモリを作成して,インストールしました.

日本語の設定にちょっとてこずりましたが,IBusとAnthyの組み合わせで快適に動いています.
きちんとキーボードの「半角/全角」キーも動作するので,バッチリです.
実はこのポストもE200Hで書いています.

 タッチパッドがタイプ中に敏感に反応してしまうので,このサイトを参考にしてちょっと鈍感になるように設定しました.

それから,ディレクトリ名が日本語だとあとでいろいろ面倒なので,いつものように英語に変更しました.

$ LANG=C xdg-user-dirs-gtk-update

それから,Rの練習をするためにつかいたかったので,とりあえずr-baseだけインストールしました.

$ sudo apt-get install r-base

 あとは絶対使うgnuplotも.今回はQtバージョンをインストール.

 $ sudo apt-get install gnuplot-qt

ネットサーフィンをするだけなら快適です.

2018年4月11日水曜日

linuxでRDPしたいのなら(Scientific Linux7,多分CentOSも同じ)

Windowsのリモートデスクトップサーバにlinuxから接続したい場合,これまでrdesktopやFreeRDPという選択肢があったと思います。
ですが,FreeRDPではキーボードが日本語にならないので,私はどっちかというとrdesktopを使っていました。

しかし!職場のリモート接続サーバ(windows server 2012R2)の仕様が変わったのか,ある時から以下のようなエラーが出てつながらなくなりました。

Failed to initialize NLA, do you have correct Kerberos TGT initialized ?
Failed to connect, CredSSP required by server.

詳しくは省きますが,有名な事象らしいです。
これはおそらくWindows10でも起こると思われますので,rdesktopは諦めざるを得ません。

そこで,日本語を諦めてFreeRDPにしようか,海外から部下も来たことだし英語版キーボードに換えようか,と考えていた時,Parallels Clientのことを思い出しました。

Mac版では日本語キーボード問題も,認証の問題もクリアしていたので,Linux版も試すことにしました。

重いコンダラを引くのが嫌なので,最近の私は基本的にはyum一発で(しかもリポジトリの設定をいじらないで)入れられるパッケージしか好まないのですが,おそるおそるウェブサイトを覗いてみると,rpmパッケージが用意されているようです。

rpmならyumに毛が生えただけみたいなものですから(本当はrpmに毛が生えたものがyumなのですが),ダメもとでダウンロード。
懐かしのrpm -ivhでインストールしてみたところ,何の問題もなくインストールまではオッケー。

現在の環境は,
Linux version 3.10.0-693.17.1.el7.x86_64
ダウンロードしたParallels Client は
RASClient-16.2.19300_x86_64.rpm
でした。

アホな話なのですが,インストールしたのは良かったのですが,コマンド名が分からないw
それっぽいコマンド名を打ち込んでタブ補完してみても出てこない。。。

そこで,rpm -ql をしてみたところ,



2XClientという名前で,/opt/2X/client/bin にインストールされたようです。

起動して,認証の問題と日本語キーボードの問題がクリアされていることを確認後,パスを通すのもめんどくさいので,速攻xfceのパネルに登録しました。


そして忘れないうちにBloggerにメモ。

2016年8月10日水曜日

XQuartz -queryオプションで繋いだ時の切断について

XQuartz -query でLinuxにつないだ後,終了する際にXQuartzがうまく終了できない問題がありました。
ローカルでログインしている時のようにログアウトするとXQuartzがフリーズしてしまうのです。
killコマンドでやっつければいいのですが,あまりいい気分はしていませんでした。
[Ctrl]+[Alt]+[BS]でXの再起動も効かないのでしょうがないかなぁ,とは思っていたのですが,なんと,いろいろ古い書籍など当たっていたら,接続解除はXQuartzのメニューから「終了」を選べばいいみたいです!

でも,最近のVNCみたいに,Xを終了したように見せかけて実は裏で動いていたら嫌なので,wコマンドで確認してみました。

まずは,XQuartzでログインして,意味もなくたくさんターミナルを立ち上げます。
そのあと,Macのターミナルからsshでも接続。





そして,Mac側からXQuartzのメニューで終了を選び,切断。

その様子をssh接続したターミナルで見ると,



こんな感じ。
無事にログアウトできています。

よかったよかった。
これで,安心してLinuxマシンからキーボードとディスプレイを外せる。。。



2016年8月4日木曜日

LinuxでAgilentの82357Bを使うために part 3: 本編

それでは,まずfirmwareも何もしない状態で82357Bをusbポートに差し込みます。
lsusbしてみます。

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 002 Device 003: ID 0957:0518 Agilent Technologies, Inc. 82357B GPIB Interface


きちんと82357BがBus 002にDevice 003,IDが0957:0518として認識されています。
(オレンジと赤の色は私がつけました。)
このBus番号とDevice番号を控えておきます。
ところが,この時にアダプタ本体を見てみると,FAILの赤いLEDが光っています。



suになって,gpib_common.koとagilent_82357a.koのモジュールを組み込みます。
ここで注意しないといけないのは,linux-gpibはカーネルが変わるたびにmakeし直さないといけないということです。そうでないと多分いろいろ面倒なことになります。
なので,カーネルをアップデートなりアップグレードなりしたら必ずlinux-gpibもmakeし直します。
なので,以下のカーネルバージョン番号も,今のカーネルバージョンに合わせて読み替える必要があります。


[root@gpibnote01 Downloads]# insmod /lib/modules/2.6.32-642.el6.i686/gpib/sys/gpib_common.ko 
[root@gpibnote01 Downloads]# insmod /lib/modules/2.6.32-642.el6.i686/gpib/agilent_82357a/agilent_82357a.ko 
[root@gpibnote01 Downloads]# 



dmesgしてみると,きちんと認識されています。


[root@gpibnote01 Downloads]# dmesg
*
*
(中略)
*
*
Linux-GPIB 4.0.3 Driver
agilent_82357a_gpib driver loading
usbcore: registered new interface driver agilent_82357a_gpib
gpib: registered agilent_82357a interface


でも,アダプタを見るとまだ赤いFAILが点灯しています。
lsmodしてみます。

[root@gpibnote01 Downloads]# lsmod | grep agilent
agilent_82357a         16562  0 
gpib_common            27244  1 agilent_82357a
[root@gpibnote01 Downloads]# 


それでは,さっきfirmwareをダウンロードして展開したディレクトリに移動します。

[root@gpibnote01 Downloads]# cd gpib_firmware-2008-08-10
[root@gpibnote01 gpib_firmware-2008-08-10]# ls
README  agilent_82357a  hp_82341  hp_82350a  ni_gpib_usb_b
[root@gpibnote01 gpib_firmware-2008-08-10]# 
[root@gpibnote01 gpib_firmware-2008-08-10]# cd agilent_82357a/

[root@gpibnote01 agilent_82357a]# ls

82357a_fw.hex  README~     lsusb_initial.txt   measat_releaseX1.8.hex

README         firmware.c  lsusb_postload.txt

[root@gpibnote01 agilent_82357a]# 


ここのREADMEを見てみると,やり方が書いてありました。


[root@gpibnote01 agilent_82357a]# cat README
The firmware files can be uploaded to your Agilent 82357A/B adapter
using fxload.  The 82357a_fw.hex file is for the 82357A and the
measat_releaseX1.8.hex file is for the 82357B.

There is apparently a bug in the 82357B firmware which causes the
first firmware upload to an 82357B to fail.  After the first
attempt, the device will disconnect then reconnect (with a
new address), but will still be in an uninitialized state with
device id 518.  Loading the firmware a second time will
cause the device to disconnect again, but this time it when
it comes back it will be fully functional with device id 718.
If you have your OS set up to
automatically load the firmware, you
won't notice this bug, since it will just cause the OS to
automatically load the firmware twice.


Examples:

fxload -D /proc/bus/usb/001/002 -I 82357a_fw.hex 

fxload -t fx2 -D /proc/bus/usb/001/003 -I measat_releaseX1.8.hex


Note the 82357B requires the "-t fx2" command line option of fxload.

If you wish for the firmware to be automatically loaded through hotplug, 
copy the firmware file to the /usr/share/usb/agilent_8237a/ directory
(or wherever the /etc/hotplug/usb/agilent_82357a script expects to find it).


なるほど,二回やらないといけないのですね。
ではまず一回目のfxloadをやってみます。
この時,lsusbで確認したBus番号とDevice番号を使うようにします。

[root@gpibnote01 agilent_82357a]# fxload -t fx2 -D /proc/bus/usb/002/003 -I measat_releaseX1.8.hex 

何も起こりません。しかしこの時,実際は一度引き抜かれてまた挿し直されたと勘違いしているみたいです。
dmesgしてみると,

usb 2-1.2: USB disconnect, device number 3
usb 2-1.2: new high speed USB device number 4 using ehci_hcd
usb 2-1.2: New USB device found, idVendor=0957, idProduct=0518
usb 2-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
usb 2-1.2: configuration #1 chosen from 1 choice


のように出ています。
ここでlsusbしてみると,device numberが一つ上がっています。

[root@gpibnote01 agilent_82357a]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 8086:0186 Intel Corp. WiMAX Connection 2400m
Bus 002 Device 004: ID 0957:0518 Agilent Technologies, Inc. 82357B GPIB Interface
[root@gpibnote01 agilent_82357a]# 


ここでもう一回fxloadでfirmwareをアップロードするのですが,この時Deviceが004に変わっていることに注意しないといけません。

[root@gpibnote01 agilent_82357a]# fxload -t fx2 -D /proc/bus/usb/002/004 -I measat_releaseX1.8.hex 
[root@gpibnote01 agilent_82357a]# 

ここで何か言われていたら,おそらくDevice番号を間違えているのだと思います。
うまくいっていれば何も返事がないはずです。
dmesgしてみると,

usb 2-1.2: USB disconnect, device number 4
usb 2-1.2: new high speed USB device number 5 using ehci_hcd
usb 2-1.2: New USB device found, idVendor=0957, idProduct=0718
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=5
usb 2-1.2: Product: 82357B ()
usb 2-1.2: Manufacturer: Agilent Technologies, Inc.
usb 2-1.2: SerialNumber: MY49450481
usb 2-1.2: configuration #1 chosen from 1 choice
probe succeeded for path: usb-0000:00:1d.0-1.2
attached to bus interface 0, address 0xf33fa200
agilent_82357a_attach: attached

となって,またdevice number4が引っこ抜かれてdevice number5に変わっています。
ここで注目すべきは,idProductが0718に変わっているというところです。
ちなみに私はすでに/etc/gpib.configに記述がある上に,すでに一連の作業を終えているので,最後の二行のようにもう使える状態になっています。
そうでない場合は,/etc/gpib.confを適切に書き換えて,gpib_configコマンドを管理者権限で行います。
こうなると背面のLEDが緑色に点灯しています。




ibtestをして通信してみました。

[root@gpibnote01 agilent_82357a]# ibtest 
Do you wish to open a (d)evice or an interface (b)oard?
(you probably want to open a device): d
enter primary gpib address for device you wish to open [0-30]: 16
trying to open pad = 16 on /dev/gpib0 ...

: w
enter a string to send to your device: *idn?
sending string: *idn?

gpib status is: 
ibsta = 0x2100  < END CMPL >
iberr= 0

ibcnt = 6

: r
enter maximum number of bytes to read [1024]: 100
trying to read 100 bytes from device...
received string: 'LSCI,MODEL330,0,061694
'
Number of bytes read: 24
gpib status is: 
ibsta = 0x2100  < END CMPL >
iberr= 0

ibcnt = 24



*idn?と話しかけて,LSCI,MODEL330,0,061694とお返事をもらいました。