「ソフトウェア」カテゴリーアーカイブ

Raspberry Pi の lscpu


lscpu コマンド

lscpu コマンドで CPU 情報を表示することができます。

Raspberry Pi での lscpu コマンドの実行結果を以下に示します。

 

Raspberry Pi2 model B+

 

 

Raspberry Pi model B+

 

 


Raspberry Pi のファームウェアのアップデート


Raspberry Pi の最新ファームウェアは、Raspbian から rpi-update コマンドでアップデートすることができます。

ただし、最新版にアップデートしたい場合のみ使用してください。rpi-update を使わなくても通常の Raspbian のパッケージ更新で安定版にアップデートできます。

公式には rpi-update で最新のファームウェアのアップデートは推奨されていません。最新版が必ずしも良いというわけではないのでご注意ください。(安定版じゃないから)

続きを読む Raspberry Pi のファームウェアのアップデート


Raspberry Pi のインストール済みパッケージ一覧


Raspberry Pi の標準的な OS である Raspbian は Debian がベースになっています。

なので、Debian 同様に Raspberry Pi (Raspbian) にインストール済みのパッケージの一覧は dpkg コマンドで調べることができます。

 

複数の Raspberry Pi を管理していて、全ての Raspberry Pi にインストールしているパッケージを揃えたいといった場合には役立つことでしょう。

あるは、OS のクリーンインストールを行う前にリストを作成しておいて、クリーンインストール後にリストにあるパッケージをインストールすることで前の環境に近づけるのにも使えます。

私は Wheezy から Jessie にバージョンアップする際にクリーンインストールを行ったので、Wheezy 環境でインストールしたパッケージのリストを取っておいて、Jessie 環境にリストのパッケージをインストールし直しました。もちろん、ユーザファイルや設定ファイル等は別にバックアップが必要ですのでその点はご注意ください。

 

 


Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート – その2 –


glxgears
glxgears

Raspberry Pi2 では、Desktop GL driver を有効化することで、X11 上で OpenGL アプリケーションのハードウェアアクセラレートが可能となります。

Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート – その1-」では、Desktop GL driver の有効化方法を紹介しました。

今回は、ソフトウェアレンダラーとの比較と Desktop GL driver の問題点を紹介します。

続きを読む Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート – その2 –


Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート – その1-


glxgears
glxgears

これまで Raspbian の X11 では OpenGL は使用できませんでした(X サーバは GLX に対応していました)が、Jessie の最新ではハードウェア対応の OpenGL 2.1 が動くようになりました。

Raspberry Pi2 の GPU はモバイル用なので、OpenGL ES 1.1, OpenGL ES 2.0 対応の GPU です。しかし、OpenGL 2.1 はデスクトップ向けのものであり、ネイティブでは対応していません。そのため OpenGL 2.1 は内部的に OpenGL ES 2.0 に変換して対応しているものと考えられます。

続きを読む Raspberry Pi2 の X11 で OpenGL のハードウェアアクセラレート – その1-


Raspberry Pi の Debian ディストリビューションのバージョン


Raspberry Pi の標準 OS である Raspbian は Debian を元に作られています。その元になっている Debian のディストリビューションのバージョンは /etc/debian_versionというファイルに書かれています。

Jessie の場合:

 

Wheezy の場合:

 

lsb_release コマンドに -a オプションを付けて実行するとより詳しい情報が表示されます。

インストール方法:

 

Jessie の場合:

 

Wheezy の場合:

wheezy_001

 


Raspberry Pi で rdesktop


rdesktop

rdesktop は、リモートデスクトップクライアントソフトウェアです。Raspberry Pi から Windows にリモートデスクトップ接続することができます。(リモートデスクトップ接続可能な Windows に限ります。)

rdesktop
rdesktop

この例では、Windows Server 2012 の Hyper-V の仮想マシンで動かしている Windows 8.1 Enterprise に Raspberry Pi から接続したものです。(RemoteFX 環境)

インストール方法:

apt-get で rdesktop をインストールします。

 

使用方法:

 

主なオプション:

以下に主なオプションを示します。その他のオプションはオンラインマニュアルをご覧ください。

-u <USER>

ユーザ名の指定

-d <DOMAIN>

ドメインの指定

-p <PASSWD>

パスワードの指定

-g <GEOMETORY>

デスクトップサイズの指定。<width>x<height> または “xx%” で指定

-f

デスクトップサイズをフルスクリーンで指定

 

備考:

rdesktop がサポートする RDP のバージョンは、RDP 5 (デフォルト) と RDP 4 です。(ですが、クライアント側だからか、RemoteFX の GPU アクセラレーションは有効になっているようです。)

rdesktop - RemoteFX -


Raspberry Pi で atlantis


atlantis を Raspberry Pi に移植しました。

atlantis は、OpenGL の初期の頃のデモアプリケーションで、母クジラ、子クジラ、イルカ、サメ4匹が泳ぎまわります。

atlantis
atlantis

オリジナルのソースコードは、以下からダウンロードできます。(GLUT のソースにも含まれます。)

https://www.opengl.org/archives/resources/code/samples/glut_examples/demos/demos.html

ソースのコピーライトを見ると 1993, 1994 となっているので、もう 20 年以上前ですね。

Windows 用の実行ファイルも含まれていますが、Cosmo 3D (SGI の Windows 用 OpenGL) の DLL が必要なので、動かせる環境はもうないでしょうね。そのため、Windows でも自前でビルドする必要がありそうです。

また、X のスクリーンセーバの xscreensaver-gl-extra にも改良版の atlantis が含まれています。たぶん、O2 が発売された頃にプロジェクションマッピングに対応したものがベースとなっていると思います。

オリジナルは GLUT + OpenGL ですが、Raspberry Pi で動かすために、SDL2 + OpenGL ES 1.1 に書き換えました。Raspberry Pi2 なら、そこそこ動きます。

よく見るとクジラのポリゴンが裏返っているようです。

ということで、クジラのポリゴンをキー入力で裏返す機能も付けました。

以下は、クジラのポリゴンを裏返して正しい表示にしたものです。

atlantis002
atlantis002
atlantis003
atlantis003
atlantis004
atlantis004
atlantis005
atlantis005

 


Raspberry Pi で TightVNC サーバ


TightVNC サーバ

Raspberry Pi 本体のデスクトップ(Xサーバ)とは別にクライアント用のデスクトップ(Xサーバ)を使用することができる VNC サーバです。

Raspberry Pi 本体のデスクトップ(Xサーバ)は通常ディスプレイ番号0番で、HDMI 等で接続したディスプレイに表示されるデスクトップを指します。

TightVNC の VNC サーバは、それとは別のデスクトップ(ディスプレイ番号が異なる)でリモートで表示/操作することができます。VNCサーバを複数起動することで、異なるデスクトップを複数作成することができます。(それらはそれぞれディスプレイ番号が異なります。)また、それぞれのデスクトップのユーザは異なっても構いません。

※ 実は TightVNC には x0vncserver という本体のデスクトップをリモート操作するための VNC サーバもありますが、Raspberry Pi には apt-get でインストールすることはできません。(Raspberry Pi 用の x0vncserver をソースからビルドできるかどうかは不明です)

インストール方法:

apt-get で tightvncserver をインストールします。(必須ではありませんが、tightvncserver で使用する X11/75dpi, 100dpi フォントもインストールします。)

 

使用方法:

VNC のパスワードはユーザごとに管理されており、vncserver 初回起動時にそのユーザのパスワード設定を行います。(パスワードは後から vncpasswd で変更することも可能です。)
パスワードは6文字以上8文字以下。

パスワードの設定が行われた後、(vncserver を起動したユーザで)新しい X サーバが起動します。

‘raspberrypi:1′ の部分は、’VNC サーバのホスト名:ディスプレイ番号’ のことであり、また、5900 + ディスプレイ番号のポートを使用することを示しています。

VNC クライアントから 5900 + ディスプレイ番号 のポートに接続すると、ユーザパスワードを求められるので、先のパスワードを入力することでリモートデスクトップを開くことができます。

VNC クライアントとしては、Windows なら RealVNC Viewer(32bit版, 64bit版)、Mac なら画面共有、iPhone なら VNC Viewer、Android なら RealViewer、Raspberry Pi なら TightVNC viewer 等があります。

例えば Windows で RealVNC (VNC Viewer) を使う場合、Raspberry Pi で vncserver を起動した状態で、Windows から VNC クライアントを起動します。

vnc_client_001

「VNC Server」に ’Raspberry Pi のホスト名:ディスプレイ番号’ を指定します。ディスプレイ番号が1(ポート番号が 5901) の場合は、’ホスト名:1′ と指定します。(ホスト名は IPアドレスでも可)

vnc_client_002

VNCサーバが暗号化に対応していないという警告がでます。

vnc_client_003

指定した VNC サーバのパスワードを入力します。

vnc_client_004

Raspberry Pi のデスクトップが開きます。

 

Usage:

vncserver のコマンドライン引数は以下の通りです。

 

vncserver の主なオプション:

-kill :<DISPLAY#>

 

  • ディスプレイ番号を指定して vncserver を終了します。(この例では、ディスプレイ番号1の vncserver を終了)

 

-geometry <WIDTH>x<HEIGHT>

 

  • デスクトップサイズを指定します。(この例では 1280×800)

-depth <DEPTH>

 

  • デスクトップの色深度を指定します。(この例では 24bit Color)

 

VNC サーバの終了:

-kill オプションを使用して vncserver を終了します。

 

  • vncserver をディスプレイ番号を指定して終了します。(この例では、ディスプレイ番号1 の vncserver を終了)

 

パスワードの変更:

パスワードを変更する場合は、変更したユーザにログインした上で、vncpasswd コマンドで変更します。

 

自動起動設定:

vncserver を手動でいちいち立ち上げるのが面倒という場合には、Raspberry Pi の起動時に自動で vncserver を立ち上げるようにも設定できます。

ユーザ root で 1280×800 24bit Color の vncserver を自動起動するスクリプトです。(必要に応じて vncserver の引数やユーザを変更しましょう。)

このスクリプトを vncboot という名前で /etc/init.d に置き、実行属性を付け、自動起動するように設定します。

これで、Raspberry Pi の起動時に vncserver が自動起動します。

なお、自動起動しないようにするには、次のコマンドで登録を削除します。

 

参考:

TightVNC の X サーバの xdpyinfo の出力結果です。(この例では、デスクトップは 1024×768 24bitColor です。)


 


Raspberry Pi で x11vnc


x11vnc

x11vnc を使用することで、 Raspberry Pi 本体のデスクトップ(デフォルトの Xサーバ)を VNC クライアントでリモート表示/操作することができます。Raspberry Pi 本体のデスクトップとは別のデスクトップを VNC で使用したい場合は、TightVNC サーバを使用してください。

 

x11vnc
x11vnc

インストール方法:

x11vnc は、apt-get でインストールできます。

 

次に x11vnc に -storepasswd を指定して起動し、そのユーザのパスワードを設定して VNC サーバのパスワードを保存します。

 

自動起動の設定:

startx 実行時 (X サーバ起動時) に自動的に x11vnc を起動するには、以下の内容で ~/.config/autostart/x11vnc.desktop ファイルを作成する必要があります。(Raspbian 起動時に X サーバが自動起動するようになっている場合は、更に VNC サーバも自動起動します。)

 

注意:

VNC サーバのパスワードと x11vnc.desktop ファイルは、X サーバを起動するユーザに対して設定する必要があります。

 

使用方法:

自動起動の設定を行っている場合は、デフォルトの X サーバ(通常、ディスプレイ番号0番)が起動している状態で、ポート 5900 に VNC クライアントで接続します。

接続時のパスワードは、先で保存したパスワードになります。

クライアント側には、Raspberry Pi 本体のデスクトップが表示されます。(デスクトップのサイズはもちろん本体のデスクトップのサイズとなります。)

なお、x11vnc のデスクトップのサイズを変更するには、本体のデスクトップのサイズごと変更する必要があります。(/boot/config.txt の framebuffer_width, framebuffer_height で指定することが可能です。)

raspi_xgears

デフォルトのXサーバは GLX 対応(ただしソフトウェアレンダラ)なので、別マシンの OpenGL アプリケーションをリモート表示することも可能です。

参考:

x11vnc の X サーバ(デフォルトの X サーバ)の xdpyinfo 出力結果です。(この例では、1280×800 サイズ)

 


Raspberry Pi で VNC


はじめに

VNC(Virtual Network Computing) は、サーバ/クライアントモデルのシステムで、サーバ側のデスクトップをクライアント側で表示/操作することができるリモートデスクトップシステムです。

Mac の画面共有
Mac の画面共有で Raspberry Pi の VNC サーバに接続

例えば、Raspberry Pi で VNC サーバを動かし、Windows や Mac、Linux、スマホ等で VNC クライアントを使うことで、 Raspberry Pi のデスクトップを表示/操作することができます。(MacOS X の場合、画面共有は vnc プロトコルを使用しますので、特別な VNC クライアントを使わなくても Raspberry Pi の VNC サーバに接続することができます。)

VNC は音声をサポートしていないため、サーバ側のサウンドをクライアント側で聞くことはできません。

VNC サーバ

Raspberry Pi で多く利用されている VNC サーバは次の2種類です。

  • TightVNC サーバ
  • x11vnc

 

TightVNC サーバ

TightVNC サーバは、Raspberry Pi 本体のデスクトップとは別にクライアント用のデスクトップを使用することができる VNC サーバです。

Raspberry Pi 本体のデスクトップとは別の X サーバを使用し、解像度も本体側のデスクトップに影響されません。

 

x11vnc

x11vnc は、Raspberry Pi 本体のデスクトップをそのままリモートで操作することができる VNC サーバです。

Raspberry Pi 本体のデスクトップをそのままリモートで操作するため、リモートデスクトップのサイズは Raspberry Pi 本体のデスクトップのサイズと同じになります。

 

Dispmanx VNC Server

特殊な VNC サーバで、Raspberry Pi 本体コンソールをリモートで操作することができる VNC サーバです。

/dev/fb0 の画面だけではなく、Raspberry Pi 本体コンソールに表示される GPU 画面(OpenGL ES, OpenVG アプリケーション)も VNC クライアント側に表示することができます。もちろん、Raspberry Pi 本体のデスクトップの解像度と同じになります。

 

VNC クライアント

VNC サーバに接続して、接続先のデスクトップを表示/操作するためのソフトウェアです。

Windows や Mac、Linux 等で  VNC サーバを動かし、Raspberry Pi で VNC クライアントを動かせば、Raspberry Pi で Windows や Mac、Linux 等の画面表示/操作ができます。

以下は、Raspberry Pi で動く VNC クライアントソフトウェアです。

TightVNC viewer

TightVNC viewer は、一般的な VNC クライアントソフトウェアです。TighgVNC Server に接続する場合には、独自の転送方式の Tight Encoding が使用できます。

krdc

krdc は、Raspberry Pi から Windows や Mac、Linux 等の VNC サーバに接続して、画面表示/操作が可能となる VNC クライアントソフトウェアです。

krdc は、vnc プロトコル以外にも rdp プロトコルに対応していています。そのため、Windows のリモートデスクトップクライアントソフトウェアでもあります。

krdc
krdc

この画面は、Raspberry Pi の krdc で自身の VNC サーバに接続したものです。(ただし、VNC サーバは krdc を実行したデスクトップとは異なるデスクトップを使用しています。)

 

 


Raspberry Pi の仮想キーボード


はじめに

matchbox-keyboard は、Raspberry Pi で使用可能な仮想キーボードのひとつです。(X用の仮想キーボードなのでコンソールでは使えません。)

vkey001

タッチパネルで文字入力するには必須ですね。

VNCやリモートデスクトップで、入力できない記号があったりしますが、そのような場合に仮想キーボードを補助的に使うことができます。あれば便利。

 

インストール方法

 

実行方法

メニューから起動することができます。

vkey_menu

コマンドラインからの実行方法は次の通り。

 

キー配列

標準, us, ru, fi, dvorak, extended, numpad の7種類用意されています。

extended

拡張101英語キーボードです。(ちょっと違うけど)

標準状態

vkey001

 

Shift ロック状態

vkey002

 

キー配列変更

キー配列は設定ファイル(xml) で変更可能です。

 

extended-jis

せっかくなので、JISキーボード風のキー配列の設定ファイルを作ってみました。

https://raspberrypi.akaneiro.jp/src/matchbox/matchbox-keyboard-extended-jis.tar.gz

インストール方法

 

起動方法

 

標準状態
vkey-jis001

 

Shift ロック状態

vkey-jis002


Raspberry Pi のシリアルナンバー


Raspberry Pi のシリアルナンバーは、コマンドラインから調べることができます。

 

シリアルナンバーは、MPEG-2, VC-1 コーデックのライセンスを購入する場合に必要になります。

また、複数の Raspberry Pi で同じ SD カードを使い回す場合に、シリアルナンバーフィルタ機能を使って、/boot/config.txt に個別設定を記述する時にも使います。

 


Raspberry Pi で xrdp


xrdp

xrdp は、Remote Desktop Protocol (RDP) のサーバソフトウェアです。Windowsのリモートデスクトップ接続で Raspberry Pi に接続できるようになります。(バックエンドで VNC サーバを使用するため、TigerVNC サーバが必要です。)
xrdp
xrdp

インストール方法:

apt-get を使って xrdp をインストールします。

次に日本語キーボードに対応するため、キーマップファイルをインストールします。(0.6.0 より前のバージョンの場合)

 

使用方法:

Windows の「リモートデスクトップ接続」で、Raspberry Pi に接続します。

Remote Desktop

接続後、xrdp のダイアログが表示され、ドロップダウンボックスで、モジュールを選択します。(通常、「sesman-Xvnc」か「console」を使うことになるかと思います。)

sesman-Xvnc

WS000031

sesman-Xvnc モジュールを選択する場合は、VNC のユーザー名とパスワードを入力します。VNC サーバが起動していない場合には、TightVNC サーバが起動します。TightVNC サーバに新規で接続する場合は、リモートデスクトップのサイズは、クライアント側指定のサイズ (通常、クライアントのデスクトップサイズ) になります。

console

WS000033

console モジュールを選択する場合は、ポート 5900 番の VNC サーバに接続します。ポート 5900 番の VNC サーバのパスワードを入力します。(ポート 5900 番の VNC サーバが x11vnc の場合は、Raspberry Pi 本体のデスクトップを表示することができます。その場合、デスクトップのサイズは Raspberry Pi 本体のデスクトップのサイズとなります。)

vnc-any

WS000035

vnc-any を選択した場合は、ホスト名、ポート番号、パスワードを指定して VNC サーバに接続します。(xrdp が動いている Raspberry Pi 以外の別マシンを指定することも可能です。)

sesman-any

WS000038

sesman-any を選択した場合は、ホスト名、ユーザ名、パスワードを指定して VNC サーバに接続します。

rdp-any

WS000040

rdp-any を選択した場合は、ホスト名を指定して RDP サーバに接続します。

sesman-X11rdp

WS000045

備考:

xrdp の依存関係を示します。(バックエンドとして使用するため、TightVNC サーバを必要とします。)

 


Raspberry Pi でスクリーンショット


はじめに

Raspberry Pi でスクリーンショット(画面のスナップショット)を撮るツールはいろいろありますが、raspi2png は、起動画面の他、OpenGL ES, OpenVG 等の GPU 描画画面のスクリーンショットも撮ることができます。もちろん X の画面も。

snapshot
起動画面のスクリーンショット
OpenVG のスクリーンショット
OpenVG のスクリーンショット

公式サイト

raspi2png

raspi2png

raspi2png の公式サイトです。ここから raspi2png のソースを取得することができます。

インストール方法

 

  • raspi2png はソースからビルドする必要があります。
  • raspi2png は libpng12-dev に依存するため、予めインストールしておく必要があります。
  • make install には対応していないため、ビルドしてできた raspi2png は手動で /usr/local/bin にコピーします。

 

実行方法

 

実行例

スクリーンショットを snapshot.png というファイル名でカレントディレクトに保存します。

–pngname オプションで保存するファイル名を指定します。

–delay オプションでコマンド実行後、5 秒後にスクリーンショットを撮ります。

 


Raspberry Pi の CPU 温度


Raspberry Pi の CPU 温度は vcgencmd を使って取得できます。

または cat コマンドを使って取得することもできます。

ただし、こちらの場合は1000倍した値になっています。

bc を使えば1000分の1に変換することも可能です。

 

なお、Raspberry Pi3 では、CPUのコア温度が 80度を超えると画面右上に Yellow square という黄色四角が表示されます。85度を越えると600MHzに強制的にクロックを落とします。これを避けるにはヒートシンクを付ける等の熱対策が必要になります。


Raspberry Pi のサンプル


サンプル

Raspberry Pi のサンプル プログラムのソースコードは、/opt/vc/src/hello_pi/ に入っています。

これらのサンプルは、VideoCore を使ったもので、コンソールで動作します。(X11 アプリケーションではありません。)

ビルド方法


 

サンプルの中からいくつか紹介します。

 

hello_triangle

OpenGL ES 1.1 のサンプル。

実行方法

 

 

hello_triangle2

triange2

OpenGL ES 2.0 のマンデルブローのサンプル。

実行方法

hello_teapot

OpenGL ES 1.1 のサンプル。

実行方法

 

hello_videocube

OpenGL ES 1.1 のサンプル。

実行方法

 

hello_tiger

OpenVG のサンプルです。

実行方法