raspbianで日本語入力ができないときに入れるもの

日本語入力できます!

f:id:else-something:20190206002830p:plain
日本語入力スクリーンショット

色々便利に使わせてもらってるraspbian。

所用があってNovember 2018バージョンを新規インストールしたら、日本語は表示されるのに、日本語入力がうまくできない。

原因はipafontが入っていないから?!

まぁ、mozc入れればいいんでしょと、たかをくくっていたものの、入れても入力できない。

そもそも、上部のパネルにfcitxのキーボードのアイコンが表示されない。

あれ?fcitx入ってるよね? って、再インストールしてもダメ。

結局、ipafontをインストールすると、すべて解決しました……

ということで、コマンド的にはこんな感じ。

sudo apt install fonts-ipafont fonts-ipaexfont
sudo apt install fcitx-mozc

インストールすんだら再起動。

その後、メニューの「設定」「入力メソッド」「fcitx設定」で、日本語キーボードを追加してください。

termuxでDocomoでもらった0円タブレット(d-01J)に開発環境を作る

Pillowとnumpyのインストールで手間取ったけど、とりあえず環境できた。

f:id:else-something:20180603092850p:plain:h250

とりあえずいつも持ち歩いてるタブレットでなんかできないかと思ってたら、 簡単に開発環境が作れそうだったので、作ってみた。

これ、小型のキーボードとセットだったり Hacker's Keyboardと組み合わせるとかなり便利かも。 とりあえず、ちょっとした移動にノーパソもって行く必要がなくなるー

先人が環境構築手順を作ってくれているんだけど、 その通りでもなんかうまく行かなかったので、 自分がうまく行った方法をまとめときます。

  • Pillowとnumpyのインストールで手間取ったけど、とりあえず環境できた。
    • 基本アップデートと簡単な環境構築
    • PythonとPIL(Pillow)のインストール
    • numpyのインストール。
    • ipython(jupyter)のインストール
    • 確認
    • 参考にさせていただいたサイト 
続きを読む

Ubuntu 16.04でHostnameの変更の仕方

hostnamectl set-hostname hoge で変わるのだけど、hostsファイルもお忘れなく

ディスクイメージコピーした後とかにhostname変更したい方はおわすれなく

上のまんまなんだけど、自分の備忘録的にも。

hostnamectl set-hostname hoge

これで、ホスト名は変えられます。

なんですが、その後sudoとかするとなんかエラーっぽいメッセージ。

〜〜〜〜は解決できません。 的な。

何かなーと思って調べてみると、

/etc/hosts
127.0.0.1 localhost
127.0.1.1 OLD-HOST-NAME

こんな感じで、変更前のホスト名が残ってまして、これが /etc/hostname とかと違うので怒られてたみたい。

これ修正したら、怒られなくなった。

良かったよかった。

raspberry pi 公式ディスプレイとraspbian jessie Pixelで、画面の90°回転ができない!!を解決。

lcd_rotate=1,3が効かない! 2は効くのに!!

やりたいことは、画面の90°回転。もしくは270°回転。タッチパネルもあわせてね。

ひょんなことで、Raspberry Pi公式ディスプレイを縦位置で画面表示する必要に迫られまして。

lcd_rotate=1

この設定を/boot/config.txtに追記してあげればすぐに変更できると思ってたのに、そうじゃなかったので、解決策をメモ。
以下の内容は、次のスレッドの議論を元に設定変更を行い、手元の環境で動作を確認しました。 (手元環境: raspberry pi3, raspbian jessie with pixel(どのリリースかわすれた。。。), raspberry pi公式ディスプレイ(たぶん、element14のやつ))

画面を回転させる設定

/boot/config.txt
に、以下の呪文を追記します。

display_rotate=1

再起動後、画面が時計回りに90°回転するはず。
反時計回りに90°(つまり時計回りに270°)回転させる場合は、設定値を3に。

タッチパネルのx,yを回転させる設定

上記ディスプレイの回転では、画面しか回転しないため、タッチパネルがおかしなことになります。
なので、以下のコマンドで、タッチパネルのx,yの軸を変更します。

xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1

コマンドラインで上のコマンドを実行すると、すぐに反映されるはず。

起動時に実行するように、スクリプトファイルにして、ログイン時に実行させる

上記コマンドを毎回打つのもアレなので、ホームフォルダにシェルスクリプトファイルを作ります。

#!/bin/sh
xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

(display_rotate=3の場合は、そちらのスクリプトを)

で、

chmod 777 rotatetouch.sh で実行権限をつけて、LXDEの自動実行に追記。

/home/pi/rotatetouch.sh

これで、自動的にタッチパネルも入力が正しく行われるようになるはず。

ハマったところ

ネットをさまよっていると、下記コマンドでタッチパネルが回転できる記述が多くありました。

xinput --set-prop 'FT5406 memory based driver' 'Evdev Axis Inversion' 0 1
xinput --set-prop 'FT5406 memory based driver' 'Evdev Axes Swap' 1

が、そんな設定ないよ、と怒られて設定できない模様。

“Coordinate Transformation Matrix”

これで、設定する必要があるみたい。

 I can run
xinput list
and see
'FT5406 memory based driver'
in the list and I can
xinput list-props 'FT5406 memory based driver' | grep "Coordinate Transformation Matrix"
and see the identity matrix I just can't seem to set it with --set-prop

Ubuntu16.04でDigits5を動かす方法と、CUDA8とDigits5,nVidia Driver 378の組み合わせでDigitsは動いているように見えるのに、GPUが見えない!の対処法

nvidia-smiでは正しくGPUを認識しているはずなのに。。。。

nVidiaドライバのインストールも、CUDAのインストールも、Digitsのインストールもとても簡単になったもんだ。。。と鼻歌歌いながらインストールしてたら、なぜかDigitsからGPUが見えないという現象に陥る。

インストール自体はなんの問題もなく完了しているはずなのになぜだ。。。。

結論からいうと、「libcuda1-378」が入っていなかったから。

別の端末でセットアップして、その時には同じ現象が起こっていなかったので、大層不思議だったのだけど、インストールされているパッケージをチェックして発覚。

libcudaが入っていなかったら、そりゃ動かないわ。。。。

Digits5インストール手順振り返り

nVidiaドライバのインストール

nVidiaのサイトから、ドライバを検索して必要なバージョンをチェック。

nVidiaドライバダウンロード

下記コマンドでPPAを追加して、必要なドライバをインストール

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt-get update

sudo apt-get install nvidia-378

一度再起動しておきます。

起動完了後に下記コマンドでドライバが動いているか確認。

nvidia-smi

CUDA8のインストール

nVidiaのサイトからOSなどの環境を選択してインストーラーを入手。

Ubuntuだったので、debファイルをダウンロードします。

CUDA Toolkit ダウンロード

ダウンロードサイトで指示された通りの手順でインストール

ネットワーク経由でのインストールをするdebファイルを選んだので、

下記のような感じ。

sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

sudo apt-get update

sudo apt-get install cuda

一度再起動

起動完了後に下記コマンドでドライバが動いているか確認。

nvidia-smi

CUDAインストール後にnVidiaドライバのバージョンが変わっていたらドライバの再インストール

再インストールしなくても動くこともあると思うのだけど、公式にサポートしているとアナウンスされているものではないドライバが利用されると不具合が起こった時に悲しくなるので。。。

sudo apt-get install nvidia-378

Digits5のインストール

こちらは、経験上nVidiaのサイト上の情報でうまくいかなかったことがあったので、GitHubのドキュメントを参考にインストール。

書かれているコマンドをそのままコピペしていく感じです。

今回はUbuntu16.04なので、こんな感じに。

私の環境では。ML_REPOのインストール辺りでエラー吐いていたのだけど、一旦無視で。

ドライババージョンを気にする割に、大雑把。。。

# For Ubuntu 16.04

CUDA_REPO_PKG=http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb

ML_REPO_PKG=http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb

# Install repo packages

wget "$CUDA_REPO_PKG" -O /tmp/cuda-repo.deb && sudo dpkg -i /tmp/cuda-repo.deb && rm -f /tmp/cuda-repo.deb

wget "$ML_REPO_PKG" -O /tmp/ml-repo.deb && sudo dpkg -i /tmp/ml-repo.deb && rm -f /tmp/ml-repo.deb

# Download new list of packages

sudo apt-get update

# インストール

sudo apt-get install digits

一度再起動

再起動後にマシンのIPをブラウザで叩くか、マシンのLocalhostにアクセスすると、Digits5の画面が確認できるはず。

CUDA8とDigits5,nVidia Driver 378の組み合わせでDigitsは動いているように見えるのに、GPUが見えない!の対処法

もしこのような自体になったら、dpkg -l | grep cudaでCUDA関連でインストールされているパッケージをチェック。

libcuda1-378とか、ドライバーバージョンにあったパッケージが入ってなかったら、インストール。

sudo apt-get install libcuda1-378

以上

rasbian でVNCサーバーを立ち上げたのに、ログインできない時の対処法

クライアントがデフォルトの認証方法をサポートしてないみたい。

原因は、デフォルトの認証方法であるUNIX認証をサポートしていないから。(remminaの場合)
認証方法を変えればよいのだけれど、それをするためにはコンソールにアクセスし、X上で設定変更する必要があるみたい。

Xにログインするためには、モニタやらキーボード・マウスを接続する必要があり、それが嫌でVNCなんだけど。。。。

まずは、RealVNC提供のViewerで、接続してみる。

一番簡単だったのが、この方法。
接続できるクライアントアプリを使う。

www.realvnc.com

RealVNCが提供するビューアーがあるので、こちらをダウンロード。 .gzで圧縮されたバイナリファイルがダウンロードできるので、 解凍したあとに、

chmod +x VNC-Viewer-6.0.2-Linux-x64

で、実行権限をつけた後に、実行。

表示されたアプリでラズパイに接続すれば、認証問題を起こさず、接続できるはず。

remminaなどで接続できるようにする。

※今後上記Viewerを利用し続けるなら、別にこの設定する必要なし。

f:id:else-something:20170319143011p:plain

上記ビューアーで接続した後に、ラズパイのVNCサーバのオプションを開く。
securityにある「Authentication」を「VNC password」に変更。

「OK」を押すと、VNCパスワードを聞いてくるので、任意のパスワードを設定すればOK。

これで、remminaなどからでもVNCでアクセスできるはず。

raspbian jessie with pixelで、autostartファイルが機能しない場合の対処法

/etc/xdg/lxsession/LXDE-pi/autostart じゃなくて、~/.config/lxsession/LXDE-pi/autostart を使うと良い

ファイルはあるのに、使われてないみたいだから、要注意かなぁ。。。

もう、まんま、このスレッドで解決しました。

https://github.com/basdegroot/raspberry-pi-kiosk/issues/4

pixelでautostartを利用してchromium-browserを起動しようとした時、何故か全然いうこと聞いてくれない。

autostartのファイルで、試しにパネルをコメントしても、パネルが起動するし。。。。

悩んで、検索したら、
/etc/xdg/lxsession/LXDE-pi/autostart
ではなくて、

~/.config/lxsession/LXDE-pi/autostart

を編集して利用したら良かったみたい。

少しハマってしまったわ。

解決できて良かった。

PythonでOpenCVのwaitKey(1)の戻り値がなんか数値になっちゃう時の対処法

とりあえず、&0xffをつけて、ASCIIコードで判断しよう

64bit + utf-8の環境なら起こる現象みたい。(つまり、最近のほとんどのlinux環境なら起こるのね)

なんか、突発的に書き捨てるpythonプログラムで、OpenCV3系統を使ってると、いつもはまるので、備忘録的にメモ。

期待した動きをしないプログラム

例えば、こんなプログラム。

import cv2

cap = cv2.VideoCapture(0)

while True:
  ret, frame = cap.read()
  cv2.imshow('test',frame)
  key = cv2.waitKey(1)
  if key == 'q':
    cv2.destroyAllWindows()
    exit()

期待としては、ビデオデバイス0のキャプチャ画像を画面に表示している画面で、qが入力されたら終了、なんですが。

効かない。
全く効かない。

期待した動きをするプログラム

こんな風にして逃げたらいいみたい。

import cv2

cap = cv2.VideoCapture(0)

while True:
  ret, frame = cap.read()
  cv2.imshow('test',frame)
  key = cv2.waitKey(1)&0xff
  if key == ord('q'):
    cv2.destroyAllWindows()
    exit()

これでqを押したら終了するはず。

waitKeyの戻り値に0xffをつけることで、ASCIIコードにしておいて、
評価したい文字をord()を使ってASCIIコードにすることで、入力文字を正しく判定できるようにしているはず……

はずなのです。

ちゃんと理解してないから、気持ち悪いわ……

Ubuntuでディスク容量不足になった時にチェックしたいこと 〜./cache/upstartとはなんぞや〜

f:id:else-something:20161115111754j:plain

先日いつも使ってるPCでディスクの容量不足に陥りまして。
いくつかバックアップなどを取っていたものがあったので、それらを削除するついでにフォルダをチェックして不要なものがないか確認してみました。

案外あるもんだねー

ディスクの容量とフォルダ容量

続きを読む