「PinePhoneの初期設定」の版間の差分
145行目: | 145行目: | ||
*: root | *: root | ||
* ルートユーザのパスワード | * ルートユーザのパスワード | ||
*: root | *: 不明 (※) | ||
*: <br> | |||
*: 最新のMobianにおいて、スーパーユーザのパスワードは不明である。 | |||
*: そのため、以下に示すコマンドを実行して、スーパーユーザのパスワードを指定する必要がある。 | |||
*: <code>sudo passwd root</code> | |||
<br> | <br> | ||
==== Manjaro ARM ==== | ==== Manjaro ARM ==== | ||
162行目: | 166行目: | ||
*: root | *: root | ||
* ルートユーザのパスワード | * ルートユーザのパスワード | ||
*: | *: 不明 (※) | ||
*: <br> | *: <br> | ||
*: 最新のManajro ARMにおいて、スーパーユーザのパスワードは不明である。 | *: 最新のManajro ARMにおいて、スーパーユーザのパスワードは不明である。 |
2023年11月28日 (火) 04:25時点における版
概要
LinuxディストリビューションをPinePhoneにインストールする手順、および、推奨される設定を記載する。
Tow-Bootのインストール (Mobianをインストールする場合)
Mobianをインストールする場合、OSをインストールする前に、SDカードにTow-Bootのイメージを焼いた後にPinePhone / PinePhone Proの本体にTow-Bootをインストールする必要がある。
2022年4月3日以降、MobianではU-Bootがサポートされていない。
そのため、Mobianのイメージとインストーラには、デバイス固有のU-Boot(ブートローダ)が含まれていない。
PinePhoneではeMMCにインストールすることを推奨、PinePhone ProではSPIにインストールすることが推奨される。
Tow-Bootは、MobianをSDカードから起動する前に行う必要がある。
また、Tow-Bootは、JumpDriveの機能も備えている。
- 最新のTow-Bootをダウンロードする。
- 最新のTow-BootをGithubからダウンロードする。
- PinePhoneの場合 : pine64-pinephoneA64-YYYY.MM-XXX.tar.xz
- PinePhone Proの場合 : pine64-pinephonePro-YYYY.MM-XXX.tar.xz
- ダウンロードしたファイルを解凍して、解凍したディレクトリに移動する。
- PinePhoneの場合、SPIフラッシュが存在しないため、mmcboot.installer.imgを使用する。
- PinePhone Proの場合、SDカードにspi.installer.imgを使用する。
- SDカードにtow-bootのイメージを書き込む。
- Tow-BootのイメージをSDカードに書き込む。(
dd
コマンドやBalena Etcher等のソフトウェアを使用する) dd
コマンドの例- PinePhoneの場合 :
sudo dd if=mmcboot.installer.img of=/dev/XXX bs=1M oflag=direct,sync status=progress
- PinePhone Proの場合 :
sudo dd if=spi.installer.img of=/dev/XXX bs=1M oflag=direct,sync status=progress
- Tow-BootのイメージをSDカードに書き込む。(
- PinePhoneにSDカードを挿入して、PinePhoneを起動する。
※注意 1 (PinePhone Proの場合)
PinePhone Proの起動順序は、SPI -> eMMC -> SDカードの順であるため、Tow-Bootを使用してインストールするために、標準の起動順序を変更する必要がある。
これは、Pinephone Pro(Explorer Edition以降)の場合、REボタンを長押しすることにより、行うことができる。
Tow-BootをSPIにインストールすることにより、Pinephone ProはOSのストレージと競合することなく、標準規格に準拠したブートが使用できる。
PinePhone Proの電源を切り、SDカードを挿入した後、Pinephone Proの[RE]ボタンとボリュームの[−]ボタンを同時押下して、電源を入れる。
※注意 2 (PinePhone Proの場合)
起動直後において、PinePhone Proが振動してLEDが赤く点灯するまで(その後、LEDが黄色に点灯する)、[RE]ボタンとボリュームの[−]ボタンを同時押下し続ける必要があることに注意する。
PinePhone Proを充電しながら行うことを推奨する。
インストーラGUIが起動するので、[Install Tow-Boot to eMMC Boot]または[Install Tow-Boot to SPI Boot] - [Start Installation]を選択する。
この時、インストール前にストレージを消去する必要は無い。
ストレージの消去は、Tow-Boot(またはSPIパーティションにインストールされた他のプラットフォームのファームウェア)のアンインストールに使用することができる。
インストール完了後、SDカードを取り出す。
OSのダウンロード
インストールするLinuxディストリビューションのイメージをダウンロードする。
- Mobian (推奨)
- Phosh (PinePhone) : https://images.mobian-project.org/pinephone/ または https://images.mobian-project.org/pinephone/weekly/
- Phosh (PinePhone Pro) : https://images.mobian-project.org/pinephonepro/ または https://images.mobian-project.org/pinephonepro/weekly/
- Manjaro ARM
- openSUSE Tumbleweed
- Phosh and Plasma Mobile : https://download.opensuse.org/repositories/devel:/ARM:/Factory:/Contrib:/PinePhone/images
PinePhone本体へのインストール
JumpDrive
内蔵のeMMCは、postmarketOSのDanct12とMartijnによるJumpDriveユーティリティを使用してOSを書き込むことができる。
JumpDriveはMicroSDから起動して、PinePhoneがコンピュータに接続されると内蔵のeMMCを公開する。
マウントされたeMMCにOSをフラッシュする手順は、他のストレージの場合と同様である。
dd
コマンド、balenaEtcher、Gnome Disks等のソフトウェアを使用してOSを書き込むことができる。
JumpDriveは、以下の公式Webサイトからダウンロードできる。
(PinePhoneの場合は、pine64-pinephone.img.xzをダウンロードする)
https://github.com/dreemurrs-embedded/Jumpdrive/releases/
- JumpDriveのイメージをダウンロードして解凍する。
- balenaEtcher等を使用して、MicroSDにJumpDriveのイメージを書き込む。
- MicroSDをPinePhoneに挿入して、PinePhoneを起動する。
- PCとPinePhoneをUSBケーブルで接続する。
- PinePhoneのストレージ(例: /dev/mm〜、dmesg、GNOME disks等でデバイス名およびアンマウントされていることを確認する)に、選択したOSのイメージファイルを書き込む。
- 書き込みが完了した後、PinePhoneをPCから外して、PinePhoneをシャットダウンする。
この時、MicroSDを取り出す。 - PinePhoneの電源を投入して、eMMCから起動する。
※備考
JumpDriveは、インストールに失敗した場合のレスキューイメージとしても機能する。
レスキューイメージとして使用するには、172.16.42.1にTelnetで接続した後、rootfsをマウントして修正すればよい。
MicroSDからインストール
- MicroSDに任意のOSを書き込みした後、PinePhoneにMicroSDを挿入して、PinePhoneを起動する。
- Webブラウザを起動して、任意のOSのイメージをダウンロードする。
または、ターミナルを起動して、OSのプロジェクトをgit clone <OSのプロジェクトのURL>する。
Gitを使用する場合は、OSをビルドする必要がある。 - 以下のコマンドを実行して、ダウンロードまたはビルドしたOSのイメージをeMMCに書き込む。
通常、現在のカーネルでは、MicroSDは/dev/mmcblk0、eMMCは/dev/mmcblk2となる。sudo dd if=<インストールするOSのイメージ> of=/dev/mmcblkX bs=1M status=progress
# XはeMMCの番号ラベル
- 書き込みが完了した後、PinePhoneをシャットダウンして、MicroSDを取り出す。
- PinePhoneの電源を投入して、eMMCから起動する。
MicroSDカードへのインストール
LinuxディストリビューションをMicroSDカードにインストールすることにより、PinePhoneにインストールせずにOSを試すことができる。
これは、LinuxデスクトップにおけるLive USBやLive DVDのような位置付けである。
MicroSDカードを使用する前に (共通)
もし、PinePhone向けLinuxディストリビューションのインストールに使用したmicroSDカードを使用する場合、以下の手順を実行する。
- GPartedや
parted
コマンド等を使用して、新しいMS-DOSパーティションを作成する。- 以下の例では、
parted
コマンドを使用したフォーマットおよびパーティションを作成している。
- フォーマットを行うmicroSDカードを選択する。
sudo parted /dev/sdX
- 例:
sudo parted /dev/sdb
- microSDカードをフォーマットする前に、
mklabel
コマンドを実行してラベルを作成する必要がある。- (parted)
mklabel gpt
- (parted)
- 次に、パーティションを作成する。
以下の例では、パーティション名を"primary"、FAT32タイプ、パーティションサイズは0%から100%までとしている。- (parted)
mkpart
- パーティションの名前? []?
primary
- ファイルシステムの種類? [ext2]?
FAT32
- 開始?
0%
- 終了?
100%
- (parted)
- パーティションの作成が完了した後、
print
コマンドを実行して、パーティションを確認する。- (parted)
print
- (parted)
- 以下の例では、
- 残存しているu-bootのデータを削除する。
この操作を行わない場合、PinePhoneは残存しているu-bootから起動しようとすることに注意する。- # MBRパーティションの場合
sudo dd if=/dev/zero of=/dev/sdX bs=8k seek=1 count=4
- # GPTパーティションの場合 (GPTパーティションテーブルの場合は、8[KB]ではなく128[KB]のオフセットでインストールされる)
sudo dd if=/dev/zero of=/dev/sdX bs=32k seek=4 count=1
Mobian
ダウンロードしたイメージファイルから、MicroSDにMobianをインストールする。
または、balenaEtcher等を使用する。
gunzip mobian-pinephone-phosh-YYYYMMDD.img.gz または gzip -d mobian-pinephone-phosh-YYYYMMDD.img.gz
sudo dd bs=1M if=mobian-pinephone-phosh-YYYYMMDD.img of=/dev/sdX status=progress
- 一般ユーザ名
- mobian
- パスワード
- 1234
- ルートユーザ名
- root
- ルートユーザのパスワード
- 不明 (※)
- 最新のMobianにおいて、スーパーユーザのパスワードは不明である。
- そのため、以下に示すコマンドを実行して、スーパーユーザのパスワードを指定する必要がある。
sudo passwd root
Manjaro ARM
ダウンロードしたイメージファイルから、MicroSDにManjaro ARMをインストールする。
または、balenaEtcher等を使用する。
xzcat Manjaro-ARM-<DE名>-pinephone-<バージョン>.img.xz | sudo dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct status=progress; sync または unxz Manjaro-ARM-<DE名>-pinephone-<バージョン>.img.xz sudo dd bs=4M if=Manjaro-ARM-<DE名>-pinephone-<バージョン>.img of=/dev/sdX status=progress
- 一般ユーザ名
- manjaro
- パスワード
- 123456
- ルートユーザ名
- root
- ルートユーザのパスワード
- 不明 (※)
- 最新のManajro ARMにおいて、スーパーユーザのパスワードは不明である。
- そのため、以下に示すコマンドを実行して、スーパーユーザのパスワードを指定する必要がある。
sudo passwd root
openSUSE Tumbleweed
ダウンロードしたイメージファイルから、MicroSDにopenSUSE Tumbleweedをインストールする。
または、balenaEtcher等を使用する。
xzcat openSUSE-Tumbleweed-ARM-PLAMO-pinephone.aarch64.raw.xz | sudo dd bs=4M of=/dev/sdX iflag=fullblock oflag=direct status=progress; sync
- 一般ユーザ名
- pine
- パスワード
- 1234
- ルートユーザ名
- root
- ルートユーザのパスワード
- linux
SIMカード
Phosh
- まず、[設定] - [Mobile] - [Advanced]項目 - [Network Mode]から、[3G, 4G]を選択する。
- 次に、[設定] - [Mobile] - [Advanced]項目 - [Access Point Names]を選択する。
- [Access Points]画面右上の[+]ボタンをタップして、APNを設定する。
以下に、各通信会社の設定を示す。
- Biglobe
- 名前
- 任意 (例. Biglobe mobile type D)
- APN
- biglobe.jp
- ユーザ名 (一部端末では、ID(ユーザ名)を
user@biglobe.jp
に設定する必要がある。エラーが発生する場合は試すこと)- user
- Password
- 0000
- 認証方式
- CHAPまたはPAP
- PDP Type
- IP (PPPは未対応)
- APNタイプ (テザリングが利用できない場合、端末の接続設定に
APNタイプ
項目が表示される場合は、以下の設定を追加で入力する)- default,supl,dun
- ※文字列の区切りは、
,
(カンマ)であることに注意する。
- 名前
- OCNモバイル
- 名前
- 任意 (例. OCN mobile)
- APN
- 新コース : ocn.ne.jp
- ※従来の新コース用APNである
lte.ocn.ne.jp
は、グローバルIPアドレスによる接続サービスとなるが、引き続き利用できる。 - 新コース以外 : lte-d.ocn.ne.jp
- ユーザ名
- mobileid@ocn
- Password
- mobile
- 認証方式
- CHAP
- PDP Type
- IP (PPPは未対応)
- PINパスワード
- 0000(デフォルト)
- 名前
microSDカードの使用
microSDカードをデータ領域として使用する場合は、ext4フォーマットのmicroSDカードを挿入する必要がある。
もし、インストール時に使用したmicroSDカードを使用する場合は、以下の手順を実行する。
- GPartedやpartedコマンド等を使用して、新しいMS-DOSパーティションを作成する。
- partedコマンドでのパーティション作成例を、以下に示す。
- microSDカードをフォーマットする前に、
mklabel
コマンドを実行してラベルを作成する必要がある。sudo parted /dev/sdX # 例: sudo parted /dev/sdb
- (parted)
mklabel gpt
- 次に、パーティションを作成する。
以下の例では、パーティション名を"primary"、FATfsタイプ、パーティションサイズは0%から100%までとしている。- (parted)
mkpart
- パーティションの名前? []?
primary
- ファイルシステムの種類? [ext2]?
FAT32
- 開始?
0%
- 終了?
100%
- (parted)
- パーティションの作成が完了した後、printコマンドを実行して、パーティションを確認する。
- (parted)
print
- (parted)
- 次に、以下のコマンドを実行して、u-bootを上書きする。(これを行わない場合、PinePhoneは残存しているu-bootから起動しようとする)
sudo dd if=/dev/zero of=/dev/sdX bs=512 seek=16 count=1
- または
sudo dd if=/dev/zero of=/dev/sdX bs=512 seek=16 count=2
- 最後に、GNOME DisksやYaSTパーティションマネージャを使用して、microSDカードに対して、ext4パーティションを作成する。
以下に、microSDカードを使用する手順を示す。
- まず、microSDカードを挿入およびPinePhoneの電源を投入して、ターミナルを起動する。
- 以下のコマンドを実行して、microSDカードをマウントする。
sudo mkdir /mnt/sdcard && sudo mount -t ext4 /dev/mmcblk0p1 /mnt/sdcard
- 次に、ホームディレクトリの内容にmicroSDカードへコピーする。
sudo cp -aR /home /mnt/sdcard
- microSDカードの一時的なマウントポイントをアンマウントする。
sudo umount /mnt/sdcard
- microSDカードを、ホームディレクトリへマウントする。
sudo mount -t ext4 /dev/mmcblk0p1 /home
- microSDカードのUUIDを取得して、/etc/fstabファイルにエントリを追加する。
- UUIDを取得するには、以下のコマンドを実行する。
sudo blkid /dev/mmcblk0p1
- /etc/fstabファイルに、以下の内容を追記する。
- (最後のパラメータの
2
は、fsckに他のエントリの後で確認するように指示している) UUID=a2c1f977-0405-4ae1-8169-639b8ae53e3b /home ext4 defaults 0 2
- 最後に、microSDカードにあるホームディレクトリのユーザ名とグループ名を、現在使用しているユーザ名とグループ名に変更する。
sudo chown -R mobian:mobian /home/mobian
上記の設定により、microSDカードはホームディレクトリに持続的にマウントされる。
(eMMCのホームディレクトリにある全てのファイルを持つ)
Wi-FiのIPアドレスの設定
Phosh
[設定]を開いて、[Wi-Fi]を選択する。
現在接続しているWi-FiのSSID名の右にある歯車ボタンをタップする。
[IPv4]項目において、IPアドレス、サブネットマスク、ゲートウェイ、DNSの設定を行う。
初期設定
Manjaro
アップデートにおいて、ミラーサーバを設定する。
sudo pacman-mirrors --continent sudo pacman-key --init sudo pacman -Syyu
Manjaroを使用する場合、必要となる基本的なライブラリをインストールする。
sudo pacman -S --needed make cmake rsync base-devel gcc gdb gdb-common zip unzip lz4 meson ninja python python-pip sdl2 zlib ffmpeg
KB151キーボードライブラリを使用する場合は、以下に示す手順を実行する。(2023/06現在、KB151は使用できない)
- KB151キーボードライブラリをインストールする。
sudo pacman -S --needed ppkb-tools
- KB151キーボードライブラリのデーモンを自動起動する。
sudo systemctl enable ppkb-i2c-inputd.service
- 標準のキーボードライブラリを無効にするため、ブートオプション
pinephone-keyboard.disable_input
を追記する。sudo nano /boot/boot.txt
# /boot/boot.txtファイル
setenv bootargs 〜 pinephone-keyboard.disable_input
- ブートローダを更新する。
sudo pp-uboot-mkscr
- PinePhoneを再起動する。
sudo systemctl reboot
- KB151キーボードライブラリを使用して入力できるかどうか確認する。
Mobian
Mobianをアップデートする。
sudo apt update sudo apt upgrade
次に、GNOME Tweaks Toolをインストールする。
GNOME Tweaks Toolは、拡張された設定範囲を提供しており、ユーザの好みに合わせてシステムをカスタマイズすることができる。
sudo apt install gnome-tweaks
Moabianを使用する場合、必要となる基本的なライブラリをインストールする。
sudo apt install pkg-config make cmake rsync gcc gdb binutils build-essential zip unzip lz4 meson ninja-build python3 ffmpeg \ openvpn network-manager-openvpn network-manager-openvpn-gnome
SSHの設定
まず、OpenSSHサーバをインストールする。
Manjaro ARMでは、Phosh Beta28以降、Plasma Beta 13以降は標準でOpenSSHがインストールされている。
# Mobian sudo apt install openssh-server # Manjaro sudo pacman -S openssh
OpenSSHを自動起動および開始する。
# Mobian sudo systemctl enable ssh sudo systemctl restart ssh # Manjaro sudo systemctl enable sshd sudo systemctl restart sshd
日本語フォントのインストール
日本語フォントをインストールするために、以下のコマンドを実行する。
# Mobian sudo apt install fonts-dejavu fonts-noto-cjk fonts-ipafont # Manjaro sudo pacman -S --needed ttf-dejavu ttf-droid noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra otf-ipafont otf-ipaexfont otf-ipamjfont
ディスプレイ関連の調整
ソフトウェアの自動スケーリング
Phoc 0.4.0以降、画面に収まらない大きなウィンドウを自動的に縮小することができる。
この機能は、以下のコマンドを実行して、各ソフトウェアごとに有効にする必要がある。
scale-to-fit <ソフトウェアID> on
ソフトウェアIDは、ソフトウェア自身がどのように宣言しているかによって異なる。
ソフトウェア名 | ソフトウェアID |
---|---|
Anki | anki |
Calendar | gnome-calendar |
Cawbird | cawbird |
Empathy | empathy |
Firefox | firefox-esr |
Geary | geary |
Maps | org.gnome.Maps |
Mumble | net.sourceforge.mumble.mumble |
Nautilus | org.gnome.nautilus |
Totem | totem |
Sudoku | gnome-sudoku |
Chromium | chromium |
ソフトウェアIDを確認するには、ソフトウェアをWAYLAND_DEBUG=client
を付加して起動する。
例えば、Geditの場合は、xdg_toplevel@37.set_app_id("gedit")
のような行を確認する。
Evolutionのリマインダーウィンドウのサイズを変更する場合、ソフトウェアIDは、evolution-alarm-notify
となる。
Linmob.netには、スケーリングのテクニックの詳細が記載されている。
画面の拡大 1
ソフトウェアが画面に収まらない場合、画面を拡大して表示したい場合がある。
[設定]にある[ディスプレイ]には、100[%]または200[%]のスケーリングを選択する設定がある。
他の値を使用する場合やターミナルから操作する場合は、wlr-randrパッケージをインストールする。
sudo apt install wlr-randr
# スケーリングを1.5にする場合 wlr-randr --output DSI-1 -scale 1.5
この方法では、スケーリングは再起動するまで適用される。
小数点の数値を選択することもできるが、パフォーマンスに影響する可能性があることに注意すること。
puri.smのブログには、スケーリングをその場で簡単に変更できるソフトウェアを作成する方法についての記事がある。
画面の拡大 2
スケーリングの設定を永続的に適用する方法がある。
ただし、phoc.iniのデフォルト値が変更された場合、古い値になってしまう可能性があることに注意する。
標準の設定は、/usr/share/phosh/phoc.iniファイルにある。
標準の画面のスケーリングを変更するには、/usr/share/phosh/phoc.iniファイルを/etc/phosh/phoc.iniファイルにコピーして、以下の箇所を変更する。
sudo mkdir -p /etc/phosh sudo cp /usr/share/phosh/phoc.ini /etc/phosh/phoc.ini
sudo vi /etc/phosh/phoc.ini
# /etc/phosh/phoc.iniファイル
# ...略
[output:DSI-1]
#scale = 2
scale = 1
# ...略
画面の拡大 3
wlr-randr
コマンドの使用を便利にするため、yad(特に、フォーム構築オプション)を使用して、GUIソフトウェアを作成する。
これは、wlr-randr
コマンドを使用して、異なるスケールを設定する一連のボタン群である。
vi ~/InstallSoftware/Scale/scale.sh
#!/usr/bin/env bash
yad --title Scale Screen --form \
--field='Default dpi (2x scale)':fbtn "wlr-randr --output DSI-1 --scale 2" \
--field='Low dpi (1.75x scale)!window-restore-symbolic':fbtn "wlr-randr --output DSI-1 --scale 1.75" \
--field='Medium dpi (1.5x scale)!window-minimize-symbolic':fbtn "wlr-randr --output DSI-1 --scale 1.5" \
--field='High dpi (1.25x scale)!window-maximize-symbolic':fbtn "wlr-randr --output DSI-1 --scale 1.25" \
--field='Max dpi (1x scale)!view-fullscreen-symbolic':fbtn "wlr-randr --output DSI-1 --scale 1" \
--field='Restart Phosh':fbtn "sudo systemctl restart phosh" \
--button='Close!gtk-cancel':1
上記のシェルスクリプトを実行するデスクトップエントリファイルを作成する。
vi ~/.local/share/applications/Scale.desktop:
[Desktop Entry] Type=Application Name=Scale Screen GenericName=Scale Screen Icon=video-display-symbolic Exec=/home/<ユーザ名>/InstallSoftware/Scale/scale.sh Terminal=false Categories=Utility;
オンスクリーンキーボード
Mobianには、標準でSqueekboard(オンスクリーンキーボード)が搭載されている。
Squeekboardのレイアウトは、キーボードの説明ファイルを~/.local/share/squeekboard/keyboards/terminalディレクトリに追加することにより、
簡単にカスタマイズできる。
また、ディスプレイのスケーリングが100%の場合、Squeekboardは、(us|de|...)_wide.yamlファイルという追加のレイアウトを探す。
# ターミナル ~/.local/share/squeekboard/keyboards/terminal/(us|de|...).yaml ~/.local/share/squeekboard/keyboards/terminal/(us|de|...)_wide.yaml (スケーリングが100%の場合) # Emoji : ~/.local/share/squeekboard/keyboards/emoji/(us|de|...).yaml ~/.local/share/squeekboard/keyboards/emoji/(us|de|...)_wide.yaml (スケーリングが100%の場合)
Squeekboardの設定ファイルのフォーマットは、2021年4月現在、十分に文書化されていないが、カスタマイズすることは簡単である。
https://developer.puri.sm/projects/squeekboard
既存のレイアウトを利用して、それを調整すると便利である。
すぐに使用できる設定ファイルは、以下に示すURL(特に、Squeekboardリポジトリ)にある。
ユーザがカスタマイズした設定ファイルは、2文字の言語コードの後に".yaml"というファイル拡張子を付けて保存する。
横長にカスタマイズする場合は、言語コードの後に"_wide.yaml"を付ける。
例えば、us.yamlファイルおよびus_wide.yamlファイルとなる。
設定ファイルを、~/.local/share/squeekboard/keyboardsディレクトリに配置する。
ターミナルや絵文字用にカスタマイズされた設定ファイルも同じように命名されるが、terminalディレクトリやemojiディレクトリといったサブディレクトリに配置する。
例えば、カスタマイズされたUSレイアウトは、以下のディレクトリのようになる。
- ~/.local/share/squeekboard/keyboards/us.yamlファイル
- ~/.local/share/squeezeboard/keyboards/terminal/us.yaml (端末のキーボード)
また、アクセシビリティとOrca screenreaderとの互換性については、いくつかの作業が必要である。
日本語入力
Mobian
Fcitx5-KKCを使用する場合
まず、FcitxおよびKKCをインストールする。
sudo apt install fcitx5 fcitx5-kkc libfcitx5-qt1 fcitx5-config-qt fcitx5-frontend-gtk4 fcitx5-configtool fonts-noto-cjk
/etc/environmentファイルまたは~/.profileファイルの最下行に、以下の内容を追記する。
INPUT_METHOD=fcitx5 XMODIFIERS=@im=fcitx5 GTK_IM_MODULE=fcitx5 QT_IM_MODULE=fcitx5 fcitx5 -r
PinePhoneを再起動する。
PinePhoneを再起動、または、再ログインする。
ターミナルを起動して、Fcitx5の設定を行う。
QT_QPA_PLATFORM=wayland fcitx5-configtool
Fcitx設定ツールのキーボード一覧画面が表示される。(標準キーボードは削除してはならない)
[現在の言語のみ表示]チェックボックスのチェックを外す。
[+]アイコンを選択して、検索欄にkkcと入力する。
[かな漢字]キーボードを選択して、[OK]ボタンを押下する。
KKCを有効にするには、[Global Config]タブ - [Trigger Input Method]項目がある。(初期設定では、[Ctrl] + [Space])
しかし、[Ctrl] + [Space]キーはPinePhoneで使用するには快適ではないため、[Ctrl] + [LAlt]キーのような他のトリガーに変更する。
Fcitx設定ツールを終了して、外部キーボードおよびスクリーンキーボードから日本語入力ができるかどうかを確認する。
Fcitx5-Mozcを使用する場合
まず、Fcitx5とそのライブラリをインストールする。
sudo apt install fcitx5 fcitx5-mozc libfcitx5-qt1 fcitx5-config-qt fcitx5-frontend-gtk4 fcitx5-configtool
/etc/environmentファイルまたは~/.profileファイルの最下行に、以下の内容を追記する。
INPUT_METHOD=fcitx5 XMODIFIERS=@im=fcitx5 GTK_IM_MODULE=fcitx5 QT_IM_MODULE=fcitx5 fcitx5 -d &
PinePhoneを再起動、または、再ログインする。
ターミナルを起動して、Fcitx5の設定を行う。
Fcitx5の設定では、入力メソッドにMozcを追加する。
QT_QPA_PLATFORM=wayland fcitx5-configtool
日本語入力と英語入力の切り替えは、PCと同様に、[Ctrl] + [Space]キーを同時押下することで切り替えができる。
Manjaro ARM
Fcitxをインストールする。
# Fcitxをインストールする場合 sudo pacman -S --needed qt5ct qt5-translations sudo pacman -S fcitx fcitx-mozc fcitx-gtk2 fcitx-gtk3 fcitx-qt5 kcm-fcitx # Fcitx5をインストールする場合 sudo pacman -S --needed qt5ct qt5-translations sudo pacman -S --needed fcitx5 fcitx5-mozc fcitx5-qt fcitx5-config-qt fcitx5-gtk fcitx5-configtool
次に、~/.pam_environmentファイル(場合によっては、/etc/environmentファイルも含む)を作成して、以下の設定を追記する。
なお、~/.xprofileファイル、~/.profileファイル、~/.bashrcファイル、~/.xinitrcファイルは設定不要である。
# Fcitxをインストールする場合 LANG=en_US.UTF-8 XMODIFIERS=@im=fcitx XMODIFIER=@im=fcitx GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx DefaultIMModule=fcitx # Fcitx5をインストールする場合 INPUT_METHOD=fcitx5 XMODIFIERS=@im=fcitx5 GTK_IM_MODULE=fcitx5 QT_IM_MODULE=fcitx5 fcitx5 -r
PinePhoneを再起動、または、再ログインする。
ターミナルを起動して以下のコマンドを実行する。
Fcitx5の設定では、入力メソッドにMozcを追加する。
- Manjaro Phoshの場合
QT_QPA_PLATFORM=wayland fcitx5-configtool
- または
QT_QPA_PLATFORM=xcb fcitx5-configtool
- Manjaro Plasma Mobileの場合
fcitx5-configtool
電話帳
Evolutionの使用 (Phoshの場合)
Evolutionをインストールする。
# Mobian sudo apt install evolution # Manjaro sudo pacman -S evolution
Evolutionをディスプレイにフィットさせる。
この設定を行わない場合、インポート画面が大きくなりすぎるため、表示できない。
scale-to-fit evolution on
ファイルマネージャから電話帳のファイル(.vcf拡張子)を開く。
[データのインポート]画面が起動して、インポートする連絡先が表示される。
画面下の[進む]ボタンを押下して、電話帳をインポートする。
インポート完了後は、Evolutionをアンインストールする。
# Mobian sudo apt purge evolution sudo apt autoremove # Manjaro sudo pacman -R evolution
PhoneBookの使用 (KDEの場合)
- Phonebookを起動する。
- Phonebookのメイン画面右上にあるボタンをタップして、[Import Contacts]を選択する。
- ファイル選択ダイアログから、電話帳ファイル(.vcf拡張子)を選択する。
Clontactsの使用
ClontactsのGithubから、Clontactsをダウンロードする。
または、git clone
コマンドを使用して、Clontactsをダウンロードする。
sudo apt install git # Mobianのみ git clone https://github.com/pine-clover/Clontacts.git
以下のコマンドを実行して、電話帳のファイル(vcf拡張子)をインポートする。
python3 main.py <電話帳のファイルのパス>
スクリーンショット
静止画
必要な依存関係をインストールする。
# Mobian sudo apt install grim libnotify-bin yad # Manjaro sudo pacman -S --needed grim libnotify yad
以下のURLからscreenshot2appスクリプトをダウンロードして、任意のディレクトリに保存する。
https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/rGMszhcjGTIQeZwCCaXMGMvw
chmod 755 screenshot2app mkdir -p ~/InstallSoftware/ScreenShot2app mv screenshot2app ~/InstallSfotware/ScreenShot2app
以下のURLからscreenshot2appスクリプトのデスクトップエントリファイルをダウンロードして、~/.local/share/applicationsディレクトリに保存する。
https://matrix-client.matrix.org/_matrix/media/r0/download/matrix.org/CMaVegElpdiMbiChKaqPRgAW
mv screenshot.desktop ~/.local/share/applications
また、screenshot.desktopファイルを以下のように編集する。
動画
画面を録画する場合は、wf-recorderをインストールする。
sudo apt install wf-recorder
画面とマイクを使用した動画を作成する場合、以下のコマンドを実行する。(SSHからでも可能)
wf-recorder --file=recording_with_audio.mp4 --audio
音量
音量を最大にしているのに、内蔵スピーカーの音が小さいように感じることがある。 この時、alsamixerを使用して、ラインアウトのゲインを調整することができる。
sudo apt install alsa-utils
alsamixerを使用する場合、以下のコマンドを実行する。
alsamixer
ミキサーが表示されたら、[F6]キーを押下して、[PinePhone]デバイスを選択する。
左右の矢印キーで[ラインアウト]を探して、上矢印でゲインを上げる。
また、[Line Out Source]でステレオではなく[Mono Dif]を選択することで、さらにゲインを上げることができる。
PinePhoneがSMSを受信しない場合
SMSメッセージの受信ができない場合でも、SMSの送信、電話、データ通信は正常に行われている場合がある。
原因として、モデムのキューに残っているSMSメッセージが考えられる。
モデムのキューは、OSを再起動しても、OSを再インストールしても持続する時がある。
MobianおよびManjaroでは、電話、データ通信、GPS、SMS等のモデムとの全ての通信をModemManagerが行う。(他のOSではこの限りではない)
ModemManagerには、mmcli
コマンドでアクセスできる。
- Mobian
sudo mmcli -m 0 --messaging-list-sms # SMSメッセージが無い場合 No sms messages were found # SMSメッセージが10件ある場合 Found 10 SMS messages: /org/freedesktop/ModemManager1/SMS/0 (received)
- Manjaro
sudo mmcli -m 3 --messaging-list-sms # SMSメッセージが無い場合 No sms messages were found # SMSメッセージがある場合 /org/freedesktop/ModemManager1/SMS/77 (受信)
Mobianの場合は、全てのSMSメッセージを削除する場合、以下のコマンドを実行する。
sudo mmcli -m 0 --messaging-delete-sms=1 # 10件削除する場合、--messaging-delete-smsオプションの値において、 # 1~10を設定して、全てのメッセージを削除する
Manjaroの場合は、全てのSMSメッセージを削除する場合、以下のコマンドを実行する。
sudo mmcli -m 3 --messaging-delete-sms=77 # リストアップされた全てのSMSメッセージで繰り返す
なお、-m 0
または-m 3
とは、モデム0またはモデム3(PinePhoneに搭載されているモデム)を指す。
mmcliコマンドで利用できるメッセージ関連のアクションの詳細は、sudo mmcli --help-messaging
コマンドを実行することで確認できる。
また、https://electronproton.com/mmcli-command-examples も参考になる。
特定の構成では、-m 2や-m 4等、様々な-m <数値>の組み合わせを試す必要があるかもしれない。
最近のMobianやPostmarketOSには、eg25-managerというユーザスペースのデーモンが含まれており、モデムを管理して適切な動作を確保している。
スリープ / サスペンド
Phosh
カスタムサスペンドタイムアウトの設定
[設定]ソフトウェアの[電源]項目では、限られた種類のタイムアウトのみ用意されている。
以下の例では、サスペンドのタイムアウトを30秒に設定している。
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 30
また、現在のタイムアウトを確認するには、以下のコマンドを実行する。
gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout
サスペンドを防いで画面を表示し続ける
ソフトウェアの中には、スクリーンセーバーまたはサスペンドが作動するものがある。(mpv、aptでのアップグレード等)
このような場合、gnome-session-inhibitツールが役に立つ。
gnome-session-inhibitツールには、様々なレベルの抑制機能がある。
inhibit LEVELオプションを使用すると、サスペンド(別名:クラストスリープ)やアイドルでのスクリーンロックを防ぐことができる。
例えば、PinePhoneがスリープ状態になるのを防ぎ、システムをアップグレードするには、以下のコマンドを実行する。
gnome-session-inhibit -inhibit suspend sudo apt upgrade
また、以下のコマンドを.bashrcファイルのエイリアスに追記すると便利である。
# ターミナルでsudoコマンドを使用する場合はサスペンドを禁止する alias sudo='gnome-session-inhibit sudo'
上記のコマンドを自動化するには、/usr/share/applications/*.desktop にある任意のデスクトップランチャーのexec項目に対して、
gnome-session-inhibitを付加することができる。
SSHセッションでのスリープ防止
Phoshの[電源]項目にあるインアクティビティは、画面とのインタラクションのみを考慮しているため、SSH接続中にPinePhoneがスリープモードに入ることがある。
これを防ぐためには、~/.bashrcファイルの最下行に以下の設定を追記する。
if [[ -n $SSH_CONNECTION ]]; then
: $(gnome-session-inhibit --inhibit suspend \
--reason "SSH connection is active" \
--inhibit-only) &
fi
上記の設定は、環境変数SSH_CONNECTIONが現在設定されているかどうかを確認する。(これはPinePhoneにSSH接続した場合に確認される)
設定されている場合は、現在のシェルはSSHセッションを介して生成されているので、gnome-session-inhibitを使用してPinePhoneのサスペンド / スリープを防ぐ。
ssh-connectionやbash-sessionがkillされる時、gnome-session-inhibitもkillされて、PinePhoneはサスペンドできるようになる。
Mediaplayback作動中のスリープ防止
Suspend-Guardスクリプトを使用して、メディア(音楽や動画等)が再生されている間はサスペンドしないようにすることができる。
このスクリプトは、pulseaudioでオーディオを出力しているソフトウェアがあるかどうかを確認して、再度確認するまでの間、サスペンドを防止する。
これにより、メディアが再生されない場合は、サスペンドできるようになる。
このスクリプトには、自動的に設定を有効にするsystemd-unitが付属しており、ソースコードはGitで閲覧することができる。
起動時にコンソール出力を表示する
Mobian
標準では、ブートコンソールはシリアルインターフェースである。
ブートコンソールにターミナルを追加することにより、コンソール出力が可能になる。
この設定では、/etc/default/u-bootファイルを編集する。
もし、ファイルが存在しない場合は、以下のコマンドを実行する。
sudo u-boot-update
/etc/default/u-bootファイルのU_BOOT_PARAMETERS
パラメータに対して、splash
項目を削除して、console=tty1
を追記する。
これは、2つの異なるコンソール(シリアルとtty1)を有効にするためのものである。
sudo vi /etc/default/u-boot # /etc/default/u-bootファイル U_BOOT_PARAMETERS="console=ttyS0,115200 consoleblank=0 loglevel=7 rw plymouth.ignore-serial-consoles vt.global_cursor_default=0 console=tty1"
設定を適用するため、ブートローダをアップデートする。
sudo u-boot-update
Manjaro
まず、/boot/boot.txtファイルを以下のように編集する。
sudo vi /boot/boot.txt
# /boot/boot.txtファイル # 編集前 setenv bootargs loglevel=4 console=tty0 console=${console} earlycon=uart,mmio32,0x01c28000 consoleblank=0 boot=PARTUUID=${uuid_boot} root=PARTUUID=${uuid_root} rw rootwait quiet audit=0 bootsplash.bootfile=bootsplash-themes/manjaro/bootsplash # 編集後 setenv bootargs loglevel=4 console=ttyS0,115200 earlycon=uart,mmio32,0x01c28000 consoleblank=0 boot=PARTUUID=${uuid_boot} root=PARTUUID=${uuid_root} rw rootwait audit=0 console=tty1
設定を適用するため、U-bootをアップデートする。
sudo pp-uboot-mkscr
SUSE
ブートローダのquiet
オプションは、ブートプロセスを出力しないようにする設定である。
また、splash
オプションはブート画面を表示するための設定である。
Linux起動時にブートプロセスの情報を見る場合は、/etc/sysconfig/bootloaderファイルにあるDEFAULT_APPEND
を編集する。
sudo vi /etc/sysconfig/bootloader
quiet
オプションを削除する。splash=〜
をsplash=0
に変更する。
設定を適用するため、GRUBをアップデートする。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
FlatPakのインストール
ターミナルを起動して、以下のコマンドを実行する。
# Mobian sudo apt install gnome-software-plugin-flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo # Manjaro sudo pacman -S flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Chromiumブラウザのインストール
パッケージ管理システムからインストール (Mobian / Manjaro)
Chromiumをインストールする。
# Mobian sudo apt install chromium # Manjaro sudo pacman -S --needed chromium
FlatPakからインストール (Mobian / Manjaro)
パッケージ管理システムからインストールしたChromiumは、描画処理の不具合により、画面がホワイトアウトする場合がある。
この時、FlatPakからChromiumをインストールする。
flatpak install flathub org.chromium.Chromium
PinePhoneの画面に最適化する。
scale-to-fit chromium on
Chromiumを起動する。
flatpak run org.chromium.Chromium
FlatPakからChromiumをアンインストールする場合は、以下のコマンドを実行する。
flatpak uninstall org.chromium.Chromium
また、FlatPakからChromiumをアップデートする場合は、以下のコマンドを実行する。
flatpak update org.chromium.Chromium # または flatpak upgrade org.chromium.Chromium
Chromiumブラウザの設定
Chromiumを使用する前に、以下の設定を行うことが重要である。
Webブラウザのユーザエージェントが漏洩する時、サービスプロバイダがデバイスを特定した場合、アカウントを無効にする可能性がある。
- Chromiumのアドレスバーに
chrome://flags
と入力して、"Freeze User-Agent request header"をインストールおよび有効にして、Chromiumを終了する。 - 再度、Chromiumを起動して、[その他のツール] - [拡張機能]から"Use-Agent Switcher"をインストールする。
- この拡張機能を開いて、[Android] - [Android Kitkat]を選択する。
- 最後に、Chromiumを再起動する。
これにより、Chromiumがモバイルで起動する。
もし、Chromiumを起動した時に画面がホワイトアウトする場合は、/etc/chromium/local.confファイルを作成して、以下の設定を追記する。
sudo vi /etc/chromium/local.conf
# /etc/chromium/local.confファイル unset GDK_BACKEND
Chromiumブラウザが実行できるかどうか確認する。
Chromiumブラウザの問題
Chromiumを起動した時、文字が表示されない場合がある。
この時、[ハードウェアアクセラレーションが使用可能な場合は使用する]のチェックを外す。
- 設定画面も見えない可能性もあるため、アドレスバーに chrome://settings/system と入力する。
- 上から2番目のスイッチを無効化(グレーアウト)する。
- Chromiumを再起動する。
リモートデスクトップ
VNCサーバを起動して、PCからPinephoneにアクセスしてコントロールすることができる。
sudo apt install wayvnc
インストールしたwayvncを実行する。
wayvnc 0.0.0.0 -r --render-cursor
PCからTigerVNC等のVNCクライアントを使用して接続する。
※注意
マウスカーソルがPinephoneのスクリーンにしか表示されず、VNCクライアントのウインドウには表示されないため、一部のUI(ロックスクリーン等)が操作しづらい。
しかし、-r --render-cursor
オプションを付加することにより、カーソルが動くようになる。
Pinephoneの解像度は720x1280のため、PCモニタの解像度(1920x1080等)では画面の下から200ピクセルはみ出す。
ディスプレイを横向きに切り替えると、よりフィットする。
アイコンの変更
Papirus
Papirusのアイコンテーマをインストールする。
sudo apt install papirus-icon-theme
アイコンテーマをPapirusに変更する。
# Papirusライトを使用する場合 gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Light' # Papirusダークを使用する場合 gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
テーマの変更
インストールしたテーマは、/usr/share/themesディレクトリに保存される。
また、テーマの中には、システムの標準のキーバインドを変更するものがある。(例えば、プリインストールされているEmacsテーマはキーバインドのみを変更する)
- Adapta
- Adaptaは、Material Design Guidelinesに基づいたアダプティブなテーマである。
- パッケージには、Adapta、Adapta-Eta、Adapta-Nokto、Adapta-Nokto-Etaの5種類が含まれている。
sudo apt install adapta-gtk-theme fonts-roboto fonts-roboto-unhinted gnome-accessibility-themes gnome-themes-extra gtk2-engines-murrine
- Breeze
- KDEのBreezeに合わせて作成されたGTK2、GTK3用のGTKテーマである。
- パッケージには、BreezeとBreeze-Darkが含まれている。
sudo apt install breeze-gtk-theme
- Materia
- Materia(旧Flat-Plat)は、Material Designテーマである。
- パッケージには、Materia-light-compact、Materia-light、Materia-dark-compact、Materia-dark、Materia-compact、Materiaの各テーマが含まれている。
sudo apt install materia-gtk-theme
- Numix
- Numixは、ライト要素とダーク要素が組み合わさったモダンなフラットテーマである。
- ただし、Darkバージョンでは、上下のバーのテキストが見えにくい欠点がある。
sudo apt install numix-gtk-theme
インストールしたテーマを変更するには、以下のコマンドを実行する。
テーマ名とは、/usr/share/themesディレクトリにあるテーマのディレクトリ名である。
gsettings set org.gnome.desktop.interface gtk-theme '<テーマ名>'
例えば、Materiaダークに変更する場合は、以下のコマンドを実行する。
gsettings set org.gnome.desktop.interface gtk-theme 'Materia-dark'
壁紙の変更
メイン画面
壁紙は、ソフトウェアを起動して表示されるまでの間、短い時間のみ表示される。
[設定]の[背景]で設定できる。
ターミナルで背景を設定するには、以下のコマンドを実行する。
gsettings set org.gnome.desktop.background picture-uri 'file:///home/mobian/Pictures/<画像ファイル名>.jpg'
ロック画面
ソフトウェア選択画面やロック画面の背景を変更するには、~/.config/gtk-3.0/gtk.cssファイルを作成する必要がある。
以下は、cssスクリプトの例である。
// ~/.config/gtk-3.0/gtk.css
// Restart phosh using "sudo systemctl restart phosh"
phosh-app-grid {
background-image: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('file:///home/mobian/Pictures/App.jpg');
background-size: cover;
background-position: center;
}
phosh-lockscreen, .phosh-lockshield {
background-image: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('file:///home/mobian/Pictures/Lock.jpg');
background-size: cover;
background-position: center;
}
.profileファイルの編集
.profileファイルを、以下のような内容を追記する。
# User Add
# Add Library Path
export LD_LIBRARY_PATH="/home/mobian/InstallSoftware/Qt_5_15_2/lib:$LD_LIBRARY_PATH"
# Display Scaling
#wlr-randr --output DSI-1 --scale 1.5
# Enable Qt Debug
export QT_QPA_PLATFORMTHEME="qt5ct"
export DISPLAY=":0"
export XAUTHORITY="/home/mobian/.Xauthrity"
export XDG_SESSION_TYPE="wayland"
# Enable Qt Quick Debug
export QML2_IMPORT_PATH="/home/mobian/InstallSoftware/Qt_5_15_2_Library/qml"
export QML_IMPORT_PATH="/home/mobian/InstallSoftware/Qt_5_15_2_Library/qml"
export QT_PLUGIN_PATH="/home/mobian/InstallSoftware/Qt_5_15_2_Library/plugins"
#export XDG_RUNTIME_DIR="/home/mobian/XDG_RUNTIME" # Not Enable (Display will be Black Screen)
# Fcitx for Japanese
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
.bashrcファイルの編集
.bashrcファイルを、以下のような内容を追記する。
# User Add
# エイリアスを追加
alias cd='cd -P'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias ls='ls -hlvF --group-directories-first --color=auto'
alias cat='cat -n'
alias less='less -n'
alias grep='grep -i'
alias en='LANG=C LANGUAGE=C LC_ALL=C'
alias jp='LANG=ja_JP.UTF-8'
alias igrep='sudo dpkg -l | grep'
alias asearch='sudo apt-cache search'
alias nano='nano -lmS'
alias snano='sudo nano -lmS'
alias scale='wlr-randr --output DSI-1 --scale'
alias poff='sudo shutdown -h now'
alias preboot='sudo shutdown -r now'
#alias sudo='gnome-session-inhibit sudo'
# コマンドの重複を履歴に残さない
export HISTCONTROL=ignoredups
# 空白から始めたコマンドを無視
export HISTCONTROL=ignorespace
# コマンド履歴に残さないコマンド群
export HISTIGNORE="fg*:bg*:history*:cd*:ls*:cat*:less*:more*:grep*:lgrep*:igrep*:scale*:which*:clear:man*:startx*:exit*:poff*:preboot*"
HISTTIMEFORMAT='%Y%m%d %T ';
export HISTTIMEFORMA
# プロンプトの表示形式
PS1='\e[0;31m\u\e[0m@\e[0;32m\h\e[0m(\t) [Path \w] \n> '
# mkdirとcdを同時実行
function mkcd()
{
if [ "$#" -eq 0 ]; then
echo "Too few arguments!"
elif [ "$#" -eq 1 ]; then
if [ -d $1 ]; then
echo "$1 already exists!"
cd $1
else
mkdir -p $1 && cd $1
fi
else
echo "Too many arguments!"
fi
}
# ディレクトリに存在するディレクトリとファイルの検索
function lgrep()
{
if [ "$#" -eq 1 ]; then
local IFS_BACKUP=$IFS
IFS=$'\n\t'
for OBJECT in $(\ls -aA --group-directories-first | \grep -iE "${1}")
do
\ls -AdhlF --color "${OBJECT}"
done
echo ""
IFS=$IFS_BACKUP
elif [ "$#" -eq 2 ]; then
# 第1引数で指定したディレクトリが存在するか確認する
if [ ! -d "$1" ]; then
echo "Not Exist Directory $1" 1>&2
return 1
fi
local IFS_BACKUP=$IFS
IFS=$'\n\t'
# 現在のカレントディレクトリを一時的に保存する
local CURRENTDIR=$(\pwd)
# 第1引数で指定したディレクトリに移動する
cd "${1}";
# 第2引数で指定したパターンを使用して検索する
for OBJECT in $(\ls -aA --group-directories-first | \grep -iE "${2}")
do
\ls -AdhlF --color "${OBJECT}"
done
# カレントディレクトリに戻る
cd "${CURRENTDIR}"
echo ""
IFS=$IFS_BACKUP
unset -v OBJECT
else
echo "Specify Arguments." 1>&2
fi
return 0
}
# パターンにマッチするファイル内容を検索する
function filegrep()
{
if [ "$#" -eq 2 ]; then
local IFS_BACKUP=$IFS
IFS=$''
for OBJECT in $(\find . -type f -name "${1}" -print0 | \xargs -0 \grep -inE "${2}")
do
echo "${OBJECT}"
done
echo ""
IFS=$IFS_BACKUP
elif [ "$#" -eq 3 ]; then
# 第1引数で指定したディレクトリが存在するか確認する
if [ ! -d "$1" ]; then
echo "Not Exist Directory $1" 1>&2
return 1
fi
local IFS_BACKUP=$IFS
IFS=$''
# 現在のカレントディレクトリを一時的に保存する
local CURRENTDIR=$(\pwd)
# 第1引数で指定したディレクトリに移動する
cd "${1}";
# 第2引数で指定したパターンを使用して検索する
for OBJECT in $(\find . -type f -name "${2}" -print0 | \xargs -0 \grep -inE "${3}")
do
echo "${OBJECT}"
done
# カレントディレクトリに戻る
cd "${CURRENTDIR}"
echo ""
IFS=$IFS_BACKUP
unset -v OBJECT
else
echo "Specify Arguments." 1>&2
fi
return 0
}
# 環境変数PATHの設定
function SetPATH()
{
OLDIFS=${IFS}
IFS=$':'
BEFORE_HOME='$HOME'
AFTER_HOME=${HOME}
PATH_NAME=$(echo ${1//${BEFORE_HOME}/${AFTER_HOME}})
SLASH=$(echo ${PATH_NAME: -1:1})
if [ ${SLASH} = "/" ]; then
LENGTH="${#PATH_NAME}"
let LENGTH=${LENGTH}-1
PATH_NAME=$(echo ${PATH_NAME:0:${LENGTH}})
fi
if [ ! -d ${PATH_NAME} ]; then
echo "No Exist Directory"
return 1
fi
EXIST_FLAG=0
for VALUE in ${PATH}
do
if [ ${VALUE} = ${PATH_NAME} ]; then
EXIST_FLAG=1
break
fi
done
if [ ${EXIST_FLAG} -eq 0 ]; then
export PATH="$PATH_NAME:$PATH"
elif [ ${EXIST_FLAG} -eq 1 ]; then
echo "Already Exist ${PATH_NAME} in PATH " 1>&2
fi
unset -v OLDIFS SLASH LENGTH BEFORE_HOME AFTER_HOME PATH_NAME EXIST_FLAG VALUE
IFS=${OLDIFS}
return 0
}
function SetLIBRARY()
{
OLDIFS=${IFS}
IFS=$':'
BEFORE_HOME='$HOME'
AFTER_HOME="$HOME"
PATH_NAME=$(echo ${1//${BEFORE_HOME}/${AFTER_HOME}})
SLASH=$(echo ${PATH_NAME: -1:1})
if [ ${SLASH} = "/" ]; then
LENGTH="${#PATH_NAME}"
let LENGTH=${LENGTH}-1
PATH_NAME=$(echo ${PATH_NAME:0:${LENGTH}})
fi
if [ ! -d ${PATH_NAME} ]; then
echo "No Exist Directory"
return 1
fi
EXIST_FLAG=0
for VALUE in ${PATH}
do
if [ ${VALUE} = ${PATH_NAME} ]; then
EXIST_FLAG=1
break
fi
done
if [ ${EXIST_FLAG} -eq 0 ]; then
export LD_LIBRARY_PATH="$PATH_NAME:$LD_LIBRARY_PATH"
elif [ ${EXIST_FLAG} -eq 1 ]; then
echo "Already Exist ${PATH_NAME} in PATH " 1>&2
fi
unset -v OLDIFS SLASH LENGTH BEFORE_HOME AFTER_HOME PATH_NAME EXIST_FLAG VALUE
IFS=${OLDIFS}
}
# 環境変数PATHの重複を削除する
function DeleteDuplicate()
{
if typeset -A &>/dev/null; then # 連想配列が使用できるか確認する
# 使える場合
typeset -A _paths
typeset _results
while read -r _p
do
if [[ -n ${_p} ]] && (( ${_paths["${_p}"]:-1} )); then
_paths["${_p}"]=0
_results=${_results}:${_p}
fi
done <<<"${PATH//:/$'\n'}"
PATH=${_results/:/}
unset -v _p _paths _results
else
# 使えない場合はawkを使用する
typeset _p=$(awk 'BEGIN{RS=":";ORS=":"} !x[$0]++' <<<"${PATH}:")
PATH=${_p%:*:}
unset -v _p
fi
}
if [[ -n $SSH_CONNECTION ]]; then
: $(gnome-session-inhibit --inhibit suspend \
--reason "SSH connection is active" \
--inhibit-only) &
fi
SoCのオーバークロック
Allwinner SoC
Allwinner Socをオーバークロックするには、まず、/boot/dtbs/allwinnerディレクトリにあるDTBファイルをDTSファイルに変換する必要がある。
所有しているPinePhoneに適合するsun50i-a64-pinephone-1.X.dtbファイルを、DTSファイルに変換する。
sudo dtc -I dtb -O dts /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dtb -o /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dts
変換したDTSファイルの内容を、以下に示すように編集する。
以下の例では、Allwinner SoCのCPUを1.344[GHz]に変更している。
sudo vi /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dts
# /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dtsファイル # 編集前 opp-table-cpu { ...略 opp-1152000000 { opp-hz = <0x00 0x44aa2000>; opp-microvolt = <0x13d620>; clock-latency-ns = <0x3b9b0>; }; }; # 編集後 (Allwinner SoCを1.344[GHz]に変更する場合) opp-table-cpu { ...略 opp-1152000000 { #opp-hz = <0x00 0x44aa2000>; opp-hz = <0x00 0x501bd000>; opp-microvolt = <0x13d620>; clock-latency-ns = <0x3b9b0>; }; };
次に、編集したDTSファイルをDTBファイルに変更する。
sudo dtc -I dts -O dtb /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dts -o /boot/dtbs/allwinner/sun50i-a64-pinephone-1.X.dtb
以下のパッケージを再インストールする。
sudo pacman -S linux-pinephone sudo pacman -S kmod libdrm mtdev ndctl libxdmcp powersupply wayland xorg-xprop zenity iio-sensor-proxy # 不要の可能性あり
最後に、PinePhoneを再起動する。
sudo systemctl reboot
Allwinner Socのクロックの詳細を知りたい場合、/sys/kernel/debug/clk/clk_summaryファイルを確認する。
sudo cat /sys/kernel/debug/clk/clk_summary
オーバークロックに関する詳細は、PinePhoneの公式Wikiを参照すること。
初期状態のGPUのクロックは、432[MHz]に設定されている。
以下の例では、GPUのクロックを500[MHz]に設定している。
GPUの安定性を確認するために、ベンチマークツール(glmark2-es2等)を実行すること。
エラー関連
SDカードからLinuxディストリビューションがブートしない場合
最も一般的な原因は、以前、SDカードにLinuxディストリビューションまたはJumpDriveがフラッシュされており、それを消去した際にブートセクタが消去されなかったことである。
dd
コマンドを実行して、SDカードのブートセクタを消去する。
sudo dd if=/dev/zero of=/dev/sdX bs=512 seek=16 count=1 # X : SDカードのデバイス番号
起動時にLEDは緑のままでLinuxディストリビューションが起動しない場合
緑色のLEDは、まだP-Bootの段階であることを意味する。
- Tow-Bootを使用している場合
- 方法 1
- 起動時および2回目のバイブレーションの間、ボリュームダウンボタンを押しながらPinePhoneを起動する。
- 方法 2
- 再度、SDカードにLinuxディストリビューションをインストールする。
- 方法 1
- SDカード上のJumpDriveを使用している場合
- JumpDriveで起動する。
あるいは、/boot/extlinux/extlinux.confファイルを編集して古いカーネルを優先させて起動することもできる。
アップデートエラー
sudo apt upgrade
コマンドの実行において、エラーが発生する場合、以下のコマンドを実行する。
timedatectl set-ntp yes sudo systemctl restart systemd-timesyncd.service
モデムマネージャ
Phoshにおいて、SIMカードを使用して通信(4G通信)を行うEG25モデムマネージャが停止する場合がある。
この時、メイン画面左上にあるモデムマネージャ(4G)のアイコンが消える。
方法 1
モデムマネージャを再起動するため、以下のコマンドを実行する。
sudo systemctl restart eg25-manager.service
もし、上記のコマンドが正常に実行された場合は、2〜3分後にモデムマネージャが再起動する。
方法 2
モデムマネージャを再起動するため、以下のコマンドを実行する。
sudo --askpass killall ModemManager sudo /usr/bin/ModemManager &
また、上記のコマンドを、~/.bashrcファイル等にエイリアスを追加してもよい。
vi ~/.bashrc
# ~/.bashrcファイル alias startmodem=' sudo --askpass killall ModemManager; sudo /usr/bin/ModemManager &'
方法 3
モデムマネージャを数分ごとに確認して、停止している場合は自動的に再起動するSystemdサービスユニットを作成する。
モデムマネージャが停止する時、/dev/ttyUSB2ファイルが自動的に削除されるため、このファイルが削除された時にSystemdサービスユニットを実行する。
sudo vi /etc/systemd/system/modem-test.timer
# /etc/systemd/system/modem-test.timerファイル [Unit] Description=Check presence of modem every minute [Timer] OnBootSec=180 OnUnitActiveSec=180 [Install] WantedBy=timers.target
sudo vi /etc/systemd/system/modem-test.service
# /etc/systemd/system/modem-test.serviceファイル [Unit] Description=Check if modem is present and restart eg25-manager if necessary ConditionPathExists=!/dev/ttyUSB2 [Service] Type=oneshot ExecStart=systemctl restart eg25-manager.service
その他
アニメーションの無効化
Phoshにおいて、アニメーションを無効化することにより、システムのスループットが向上する場合がある。
ただし、Phosh 0.20等の古いバージョンでは、描画が崩れることに注意する。
gsettings set org.gnome.desktop.interface enable-animations false
設定を有効にするため、PinePhoneを再起動する。
または、Phoshを再起動する。
sudo systemctl restart phosh
PinePhone / PinePhone Proのバッテリー
PinePhone / PinePhone Proの純正バッテリーは、Pine64のWebサイトでは在庫が存在しない時がある。
そのため、互換バッテリーで代用しなければならない場合もある。
PinePhone / PinePhone Proのバッテリーは、2015年に販売されたSamsung J7 Phoneのバッテリー(サムスン部品番号 EB-BJ700BBC / BBE / CBE)と互換性がある。
このバッテリーは、タイトではあるが、PinePhone / PinePhone Proの筐体にフィットする。
- 国内販売店 (配達は早いが値段が高い)
- AliExpress (配達は遅いが値段が安い)
※注意
警告より大きな容量のアフターマーケットバッテリーを使用することは、自己責任で行うこと。
特に、充電器との組み合わせにより、大きな容量のバッテリーを使用すると、過電圧が発生して、モデムやBluetooth、Wi-Fiチップが壊れる場合があることに注意する。
故障
キーボード関連の故障
キーボードを装着すると、装着していないときよりもバッテリーの消耗が速くなる。
- キーボード未装着の場合、PinePhoneは1日経ってもバッテリーは保つ。
- キーボードを装着している場合、PinePhoneのバッテリーは完全に消耗し、キーボードのバッテリーもかなり消耗している。
- キーボードを通しての充電はとても遅い。
- また、キーボードを装着すると、より頻繁に熱くなる。(触ると通常より熱くなる)
この場合、キーボードのメイン基板が故障している可能性が高い。
キーボードのメイン基板の故障に巻き込まれて、PinePhoneのメイン基板も故障している場合もあるので注意すること。
詳細は、以下に示すPine64フォーラムを参照すること。
https://forum.pine64.org/showthread.php?tid=16271
キーボードを分解して、チップの焼損を確認することができる。 (キーボードを試験および修理するには、マルチメーターとハンダごてが必要となる)
もし、キーボードの充電回路が故障している場合、交換用のキーボードのメイン基板が$9.99で購入することができる。
https://pine64.com/product/pinephonepro-keyboard-mainboard/
ただし、キーボードの充電回路は故障している場合でも、PinePhoneが充電されていればキーボードとして使用できる。
PinePhoneのメインボード交換手順
PinePhoneのメインボードを交換する前に、以下に示す手順に従う。
PinePhoneのメインボードを交換するには、小型のフィリップスドライバと他工具が必要となる。
- PinePhoneの背面カバーを取り外す。
- バッテリーと挿入されているSDカード、SIMカードを取り外す。
- PinePhoneのミッドフレーム周辺にある15個のフィリップスネジを全て外す。
- プラスチックスクライバを使用して、ミッドフレームをゆっくりとこじ開ける。
ミッドフレームの下端を切り離すのが最も簡単である。
ミッドフレームがスマートフォン本体から分離するまで、スマートフォンの全側面に手を回す。 - 全てのリボンケーブルとLegoコネクタを取り外す。
以下に、取り外す部品の詳細を示す。- メインボード上部のLCDリボンケーブル
- メインボード下部の2つのレゴコネクタ
- メインボード左側のタッチスクリーンデジタイザ
- メインボード左下にあるu.FLアンテナ接続
- 上記部品を取り外した後、オーディオ/UARTジャックを外す。
- メインボードを左側から軽くこじる。
- フロントカメラとメインカメラを取り外し、これらのカメラを新しいメインボードに取り付ける。
- 新しいメインボードをシャーシにセットし、左側のプラスチック製タブに引っ掛け、反対側をしっかりと押さえ、手順5を逆に行う。
USBドック
Mobianにおいて、動作報告のあるUSBドックを以下に示す。
- Anker PowerExpand+
- HDMIポートを起動するコマンド
wlr-randr --output HDMI-A-1 --mode <外部ディスプレイの解像度>
- 注意 : 1080p以上だと不安定になることがある。
USBドック |
---|