「Raspbian」タグアーカイブ

Raspberry Pi の lscpu

lscpu コマンド

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

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

 

Raspberry Pi2 model B+

 

Architecture:          armv7l
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
Model name:            ARMv7 Processor rev 5 (v7l)
CPU max MHz:           900.0000
CPU min MHz:           600.0000

 

Raspberry Pi model B+

 

Architecture:          armv6l
Byte Order:            Little Endian
CPU(s):                1
On-line CPU(s) list:   0
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             1

 

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 コマンドで調べることができます。

$ dpkg -l

 

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

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

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

 

 

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

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

Jessie の場合:

$ cat /etc/debian_version
8.0

 

Wheezy の場合:

$ cat /etc/debian_version
7.8

 

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

インストール方法:

$ sudo apt-get install lsb-release

 

Jessie の場合:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:    8.0
Codename:   jessie

 

Wheezy の場合:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.8 (wheezy)
Release:    7.8
Codename:   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 をインストールします。

$ sudo apt-get install rdesktop

 

使用方法:

$ rdesktop [options] server

 

主なオプション:

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

-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 フォントもインストールします。)

$ sudo apt-get install tightvncserver xfonts-75dpi xfonts-100dpi

 

使用方法:

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

You will require a password to access your desktops.

Password:********
Verify:********
Would you like to enter a view-only password (y/n)? n

New 'X' desktop is raspberrypi:1

パスワードの設定が行われた後、(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 のコマンドライン引数は以下の通りです。

Usage: vncserver [<OPTIONS>] [:<DISPLAY#>]
       vncserver -kill :<DISPLAY#>

<OPTIONS> are Xtightvnc options, or:

        -name <DESKTOP-NAME>
        -depth <DEPTH>
        -geometry <WIDTH>x<HEIGHT>
        -httpport number
        -basehttpport number
        -alwaysshared
        -nevershared
        -pixelformat rgb<NNN>
        -pixelformat bgr<NNN>

 

vncserver の主なオプション:

-kill :<DISPLAY#>

例) -kill :1

 

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

 

-geometry <WIDTH>x<HEIGHT>

例) -geometry 1280x800

 

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

-depth <DEPTH>

例) -depth 24

 

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

 

VNC サーバの終了:

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

例) $ vncserver -kill :1

 

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

 

パスワードの変更:

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

$ vncpasswd
Using password file /root/.vnc/passwd
Password:******** 
Verify:********
Would you like to enter a view-only password (y/n)? n

 

自動起動設定:

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

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

#! /bin/sh
# /etc/init.d/vncboot

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO
 
USER=root
HOME=/root
 
export USER HOME
 
case "$1" in
 start)
   /usr/bin/vncserver :1 -geometry 1280x800 -depth 24
   echo "Starting VNC Server."
   ;;
 
 stop)
   /usr/bin/vncserver -kill :1
   echo "VNC Server Has been stoped."
   ;;
 
 *)
   echo "Usage: /etc/init.d/vncboot {start|stop}"
   exit 1
   ;;
esac
 
exit 0
このスクリプトを vncboot という名前で /etc/init.d に置き、実行属性を付け、自動起動するように設定します。
$ cd /etc/init.d
$ sudo chown root.root vncboot
$ sudo chmod +x vncboot
$ sudo update-rc.d vncboot defaults

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

なお、自動起動しないようにするには、次のコマンドで登録を削除します。
$ cd /etc/init.d
$ sudo update-rc.d vncboot remove

 

参考:

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

$ xdpyinfo
name of display:    :1.0
version number:    11.0
vendor string:    AT&T Laboratories Cambridge
vendor release number:    3332
maximum request size:  4194300 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    2
supported pixmap formats:
    depth 1, bits_per_pixel 1, scanline_pad 32
    depth 24, bits_per_pixel 32, scanline_pad 32
keycode range:    minimum 8, maximum 255
focus:  window 0x2c00007, revert to Parent
number of extensions:    7
    BIG-REQUESTS
    MIT-SHM
    MIT-SUNDRY-NONSTANDARD
    SHAPE
    SYNC
    XC-MISC
    XTEST
default screen number:    0
number of screens:    1

screen #0:
  dimensions:    1024x768 pixels (347x260 millimeters)
  resolution:    75x75 dots per inch
  depths (1):    24
  root window id:    0x25
  depth of root window:    24 planes
  number of colormaps:    minimum 1, maximum 1
  default colormap:    0x21
  default number of colormap cells:    256
  preallocated pixels:    black 0, white 16777215
  options:    backing-store YES, save-unders YES
  largest cursor:    1024x768
  current input event mask:    0x7a003c
    ButtonPressMask          ButtonReleaseMask        EnterWindowMask          
    LeaveWindowMask          StructureNotifyMask      SubstructureNotifyMask   
    SubstructureRedirectMask FocusChangeMask          PropertyChangeMask       
  number of visuals:    1
  default visual id:  0x22
  visual:
    visual id:    0x22
    class:    TrueColor
    depth:    24 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits

 

Raspberry Pi で x11vnc

x11vnc

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

 

x11vnc
x11vnc

インストール方法:

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

$ sudo apt-get install x11vnc

 

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

$ x11vnc -storepasswd

 

自動起動の設定:

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

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=X11VNC
Exec=x11vnc -usepw -forever
StartupNortify=false
Terminal=false
Hidden=false

 

注意:

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 サイズ)

$ xdpyinfo
name of display:    :0.0
version number:    11.0
vendor string:    The X.Org Foundation
vendor release number:    11204000
X.Org version: 1.12.4
maximum request size:  16777212 bytes
motion buffer size:  256
bitmap unit, bit order, padding:    32, LSBFirst, 32
image byte order:    LSBFirst
number of supported pixmap formats:    7
supported pixmap formats:
    depth 1, bits_per_pixel 1, scanline_pad 32
    depth 4, bits_per_pixel 8, scanline_pad 32
    depth 8, bits_per_pixel 8, scanline_pad 32
    depth 15, bits_per_pixel 16, scanline_pad 32
    depth 16, bits_per_pixel 16, scanline_pad 32
    depth 24, bits_per_pixel 32, scanline_pad 32
    depth 32, bits_per_pixel 32, scanline_pad 32
keycode range:    minimum 8, maximum 255
focus:  window 0x2200005, revert to Parent
number of extensions:    27
    BIG-REQUESTS
    Composite
    DAMAGE
    DOUBLE-BUFFER
    DPMS
    DRI2
    GLX
    Generic Event Extension
    MIT-SCREEN-SAVER
    MIT-SHM
    RANDR
    RECORD
    RENDER
    SECURITY
    SGI-GLX
    SHAPE
    SYNC
    X-Resource
    XC-MISC
    XFIXES
    XFree86-DGA
    XFree86-VidModeExtension
    XINERAMA
    XInputExtension
    XKEYBOARD
    XTEST
    XVideo
default screen number:    0
number of screens:    1

screen #0:
  dimensions:    1280x800 pixels (339x212 millimeters)
  resolution:    96x96 dots per inch
  depths (7):    16, 1, 4, 8, 15, 24, 32
  root window id:    0xe2
  depth of root window:    16 planes
  number of colormaps:    minimum 1, maximum 1
  default colormap:    0x20
  default number of colormap cells:    64
  preallocated pixels:    black 0, white 65535
  options:    backing-store NO, save-unders NO
  largest cursor:    1280x800
  current input event mask:    0x7a003c
    ButtonPressMask          ButtonReleaseMask        EnterWindowMask          
    LeaveWindowMask          StructureNotifyMask      SubstructureNotifyMask   
    SubstructureRedirectMask FocusChangeMask          PropertyChangeMask       
  number of visuals:    33
  default visual id:  0x21
  visual:
    visual id:    0x21
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    8 bits
  visual:
    visual id:    0xc2
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc3
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc4
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc5
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc6
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc7
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc8
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xc9
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xca
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xcb
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xcc
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xcd
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xce
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xcf
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd0
    class:    TrueColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd1
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd2
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd3
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd4
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd5
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd6
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd7
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd8
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xd9
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xda
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xdb
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xdc
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xdd
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xde
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xdf
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0xe0
    class:    DirectColor
    depth:    16 planes
    available colormap entries:    64 per subfield
    red, green, blue masks:    0xf800, 0x7e0, 0x1f
    significant bits in color specification:    6 bits
  visual:
    visual id:    0x41
    class:    TrueColor
    depth:    32 planes
    available colormap entries:    256 per subfield
    red, green, blue masks:    0xff0000, 0xff00, 0xff
    significant bits in color specification:    8 bits

 

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 をWi-Fi子機で無線化 -その2-

Raspberry Pi をWi-Fi子機で無線化 -その1- では、WRH-300BK2-Sを紹介しましたが、それより上位の WRH-583BK2-S を購入しました。

WRH-583BK2-S
WRH-583BK2-S

WRH-300BK2-Sと比べると、5GHz 11ac 433Mbps に対応しているのと、中継モードに対応しているのが大きな違いでしょうか。(Raspberry Pi で使うには WRH-300BK2-S で十分でしょう。他目的のためにこちらを購入しました。)有線LANポートが付いていることもあって、サイズは倍ほど大きいですし、価格も随分高いですが。

WRH-584xx2-S シリーズは、BK(ブラック)、BU(ブルー )、GN(グリーン)、RD(レッド)、WH(ホワイト)、YL(イエロー)の 6色発売されていますが、私は無難に BK にしました。

WRH-583BK2-S は、付属の USB ケーブルを PC 等の USB ポートに繋いで電源を供給します。

AC アダプタが付属したバージョンの WRH-583BK2(ブラック), WRH-483WH2(ホワイト) も発売されています。

WRH-583BK2-S の子機モードの設定は Mac に繋いで行いました。ただし、Raspberry Pi からでも可能ですので、Mac の部分を Raspberry Pi に置き換えても当てはまります。もちろん Windows でも同じです。(ただし、電源は Raspberry Pi から取らない方が安全です。)

  1. WRH-583BK2-S の有線LANポートに LAN ケーブルを繋ぎ、もう一方を Mac の  LAN ポートに繋ぎます。
  2. WRH-583BK2-S の USB ポートに付属の USB ケーブルを繋ぎ、もう一方を Mac の USB ポートに繋ぎます。(こちらは電源用)
  3. 初期状態ではルーターモードで、IP アドレスは 192.168.2.1 になっています。DHCP サーバも動いているため、Mac には 192.168.2.XXX が割り当てられます。
  4. 192.168.2.1 を Web ブラウザで開き、管理者のユーザ名とパスワードでログインします。
  5. 「設定メニュー」「動作モード設定」で、「子機モード」を選択して、「適応」ボタンを押します。すると、モード変更のため再起動します。再起動には 70 秒ほどかかります。
  6. 再起動後、子機モードになっており、IP アドレスは 192.168.2.251 に変わっているので、192.168.2.251 を Web ブラウザで開き、ログインします。
  7. Mac 側の IP アドレスは、ルーターモードで起動した時に割り当てられた IP アドレスのままなら、子機モードになった WRH-583BK2-S にアクセスできるはずです。何らかの理由で Mac 側の IP アドレスが変わってしまってアクセスできない場合には、手動で固定IPアドレス(192.168.2.XXX)を設定することでアクセスできるようになるでしょう。(子機モードの場合は DHCP サーバは動いていないため)
  8. 続いて「無線設定」で無線LANのアクセスポイントの情報を入力して「適用」ボタンを押します。しばらく待つと「親機と無線接続できています。」と表示されるはずです。親機と接続できない場合は、「無線設定」で設定した内容を再確認しましょう。
  9. 自分のネットワークが 192.168.2.XXX でない場合は、「LAN設定」「LAN設定」で WRH-583BK2-S の IP アドレスを変更できるので、ここを自分のネットワークで空いている IP アドレスに変更します。「適用」ボタンを押して再起動するのを待ちましょう。
  10. LAN 内に DHCP サーバがあるなら、WRH-583BK2-S を経由して Mac に IP アドレスを割り当てられるので、先にMac に固定IPを設定した場合は、DHCP サーバから取得するように変更します。LAN 内に DHCP サーバがない場合は、自分のネットワークで空いている IP アドレスを Mac に設定します。
  11. WRH-583BK2-S の電源を一度入れ直す必要があるかもしれませんが、Mac はこの状態で WRH-583BK2-S を経由して LAN にアクセスできるようになっているはずです。(更にルーターを経由して、インターネットにもアクセスできるはずです。)
  12. もう一度、Web ブラウザで WRH-583BK2-S に設定した IP アドレスを開き、管理者でログインします。
  13. 「システム設定」「パスワード設定」で管理者のユーザ名とパスワードを変更しておきましょう。

子機モードの設定ができれば、WRH-583BK2-S を Raspberry Pi に LAN ケーブルで繋ぎ変えるだけで、Raspberry Pi が無線化されます。(Raspberry Pi が有線LAN接続で、ネットワークに接続できていた場合)

 

なお、WRH-583BK2-S の設定の詳細は User’s Manual をご覧ください。

 

関連ページ:

Raspberry Pi の仮想キーボード

はじめに

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

vkey001

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

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

 

インストール方法

$ sudo apt-get install matchbox-keyboard

 

実行方法

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

vkey_menu

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

$ matchbox-keyboard &

 

キー配列

標準, 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

インストール方法

$ wget https://raspberrypi.akaneiro.jp/src/matchbox/matchbox-keyboard-extended-jis.tar.gz
$ tar xvzf matchbox-keyboard-extended-jis.tar.gz
$ sudo cp keyboard-extended-jis.tar.gz /usr/share/matchbox

 

起動方法

$ matchbox-keyboard extended-jis &

 

標準状態
vkey-jis001

 

Shift ロック状態

vkey-jis002

Raspberry Pi のシリアルナンバー

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

$ cat /proc/cpuinfo
processor : 0
model name : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 2.00
Features : half thumb fastmult vfp edsp java tls&nbsp;
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : BCM2708
Revision : 0010
Serial : 0000000012345678

 

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

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

[0x12345678]
# settings here are applied only to the Pi with this serial
[all]
# settings here are applied to all hardware

 

Raspberry Pi をWi-Fi子機で無線化 -その1-

Raspberry Pi を無線LANに接続するためには、USB の無線LANアダプタ(Wi-Fiアダプタ)を使用するのが一般的ですが、LANケーブルで接続した無線LANルーターを子機にして使うという方法もあります。

実はRaspberry Pi 2 と Windows 10 ではじめるIoTプログラミングという本の受け売りですが、無線LANドライバ不要で無線化できるので簡単でいいかもしれません。(Windows 10 IoT に対応した技適を通った無線LANアダプタはまだなさそうですし。)

Model A, A+ には USB ポートが1つしかありませんので、無線LANのために USB 無線LANアダプタを使ってしまうと、USB ポートが塞がってしまいます。無線LANで接続する場合は、LANポートは使わない場合が多いので、そちらを有効利用することで USB ポートは他の用途のために空けるといったことができます。

[スペック]

  • 無線LAN
    • IEEE802.11n/g/b
    • 11n : 最大300Mbps (40MHz時)
    • 2.4GHz
  • 有線LAN
    • IEEE802.3u (100BASE-TX) / IEEE802.3 (10BASE-T)
  • 電源
    • USB(microB)コネクタ

USB 無線LANアダプタと比較すると割高かもしれませんが、それほど高いものでもありませんので、気楽に導入できそうです。

子機モードの設定方法はこちら。Raspberry Pi に繋いで設定できるはずですが、まずは Windows で繋いで設定し、正常動作することを確認した方がトラブルは少ないでしょう。(先で簡単に繋がると書いてはいますが、子機モードの設定は必要ですのでお間違いなく。それができているなら Raspberry Pi 側は有線LANで繋ぐのと変わりないので簡単だということです。)

子機モードの設定方法

子機モードの設定方法

もっともいくらコンパクトとはいえ、小さな Raspberry Pi に繋いで使うとなると、十分邪魔な大きさかもしれませんが、無線LANの選択肢のひとつにはなるのではないでしょうか。

ただ、残念ながら LAN ポートのない Raspberry Pi Zero では使えません。(USB 有線LAN アダプタを追加すれば使えなくもないですが、あまりメリットがないのでオススメできません。)

 

関連ページ

Raspberry Pi で xrdp

xrdp

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

インストール方法:

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

$ sudo apt-get install xrdp

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

$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
$ sudo service xrdp restart

 

使用方法:

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 サーバを必要とします。)

$ apt-cache depends xrdp
xrdp
  依存: libc6
  依存: libpam0g
  依存: libssl1.0.0
  依存: libx11-6
  依存: libxfixes3
  依存: adduser
 |推奨: <vnc4server>
 |推奨: tightvncserver
  推奨: <vnc-server>
    tightvncserver

 

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

はじめに

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

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

公式サイト

raspi2png

raspi2png

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

インストール方法

$ sudo apt-get install libpng12-dev
$ wget https://github.com/AndrewFromMelbourne/raspi2png/archive/master.zip
$ unzip master.zip
$ cd raspi2png-master
$ make
$ sudo cp raspi2png /usr/local/bin

 

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

 

実行方法

Usage: raspi2png [--pngname name] [--width <width>] [--height <height>] [--compression <level>] [--delay <delay>] [--display <number>] [--stdout] [--help]

    --pngname,-p - name of png file to create (default is snapshot.png)
    --height,-h - image height (default is screen height)
    --width,-w - image width (default is screen width)
    --compression,-c - PNG compression level (0 - 9)
    --delay,-d - delay in seconds (default 0)
    --display,-D - Raspberry Pi display number (default 0)
    --stdout,-s - write file to stdout
    --help,-H - print this usage information

 

実行例

$ raspi2png

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

$ raspi2png --pngname filename.png

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

$ raspi2png --delay 5

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

 

Raspberry Pi の CPU 温度

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

$ sudo vcgencmd measure_temp
temp=42.2'C

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

$ cat /sys/class/thermal/thermal_zone0/temp
42236

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

$ echo "scale=3; `cat /sys/class/thermal/thermal_zone0/temp` / 1000" | bc
42.236

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

 

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

Raspberry Pi のサンプル

サンプル

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

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

ビルド方法

# cd /opt/vc/src/hello_pi
# sh rebuild.sh

 

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

 

hello_triangle

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_triangle
# ./hello_triangle.bin

 

 

hello_triangle2

triange2

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

実行方法

# cd /opt/vc/src/hello_pi/hello_triangle2
# ./hello_triangle2.bin

hello_teapot

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_teapot
# ./hello_teapot.bin

 

hello_videocube

OpenGL ES 1.1 のサンプル。

実行方法

# cd /opt/vc/src/hello_pi/hello_videocube
# ./hello_videocube.bin

 

hello_tiger

OpenVG のサンプルです。

実行方法

# cd /opt/vc/src/hello_pi/hello_tiger
# ./hello_tiger.bin