読者です 読者をやめる 読者になる 読者になる

Wake console screen with SSH

Raspberry Pi のコンソールをSSH経由でブランクから復帰させるコマンド

$ sudo sh -c "setterm --blank poke --term linux > /dev/tty1 < /dev/tty1"

逆にブランクにする場合

$ sudo sh -c "setterm --blank force --term linux > /dev/tty1 < /dev/tty1"

DisplayのON, OFF

ON

$ vcgencmd display_power 1

OFF

$ vcgencmd display_power 0

fabric

fabric という名をわすれないようにメモ

広告を非表示にする

Raspberry Pi から LPC1114 への書き込み

lpc21isp のソースを眺めていると、Raspberry Pi の GPIO を使って、リセットとISPモードの制御ができるようになっていたので試してみました

Raspberry Pi と LPC1114の配線

f:id:section27:20170218221003p:plain

lpc21isp のコンパイル

lpc21isp のソースをダウンロードして、次のようにしてビルドすることで、リセットとISPモードの制御に Raspberry Pi の GPIO が使えるようになります。

$ tar xvzf ~/Downloads/lpc21isp_197.tar.gz
$ cd lpc21isp_197
$ make CFLAGS="-Wall -DGPIO_ISP=23 -DGPIO_RST=18"

Raspberry Pi の GPIO のセットアップ

#!/bin/sh

# Configure -ISP signal
echo 23 >/sys/class/gpio/export
echo out >/sys/class/gpio/gpio23/direction
echo 1 >/sys/class/gpio/gpio23/value
chown root.gpio /sys/class/gpio/gpio23/value
chmod 660 /sys/class/gpio/gpio23/value

# Configure -RST signal
echo 18 >/sys/class/gpio/export
echo out >/sys/class/gpio/gpio18/direction
echo 1 >/sys/class/gpio/gpio18/value
chown root.gpio /sys/class/gpio/gpio18/value
chmod 660 /sys/class/gpio/gpio18/value

bin ファイルの書き込み

lpc21isp -control -bin firmware.bin /dev/ttyAMA0 115200 48000

SDKMANを使ってRaspberry PiにScalaをインストール

SDKMAN

まず、zip をインストールします

$ sudo apt-get install zip

SDKMANをインストールしてパス設定等を反映します

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"

sbt, scala をインストールします

$ sdk install sbt
$ sdk install scala

activator をインストールします

$ sdk install activator

activator の起動がメモリ不足でできないときは、swap を増やして対応します

$ sudo dd if=/dev/zero of=/swapfile bs=4096 count=1048576
$ sudo mkswap /swapfile

/etc/fstab に次の記述を追加します

/swapfile swap swap defaults
$ swapon -a

Raspberry Pi で Arduino のスケッチを書き込む

Raspbian の設定

arduino

# apt-get install arduino

python-pip

# apt-get install python-pip -y

platformio

# pip install platformio

プロジェクトを作成します

$ mkdir arduino-led
$ cd arduino-led
$ platformio init --board=uno

platformio.ini の最後に次の記述を追記します

upload_port=/dev/ttyACM0

ソースコードを記述します

#define LED_PIN (13)
void setup() {
    pinMode(LED_PIN, OUTPUT);
}
void loop() {
    digitalWrite(LED_PIN, HIGH);
    delay(5000);
    digitalWrite(LED_PIN, LOW);
    delay(5000);
}

ビルドと実行

$ platformio run --target=upload

GitHub

Apple社のMobile Device Management用のベンダー証明書の発行手順

概要

MDM証明書要求の手順

RSAの鍵ペアの生成

最初にRSAの公開鍵と秘密鍵のペアを生成します。 秘密鍵はプッシュ通信を行う時に使用するため、生成した秘密鍵は厳重に保管します。

証明書署名要求(Certificataion Signing Request)の生成

Apple社のMDM証明書のCSRは独自のフォーマット(plist)で生成する必要があります。

1. 証明書署名要求の生成

証明書署名要求をRSA秘密鍵SHA1を使って署名したバイナリイメージをBase64で変換した文字列を生成します。

2. 証明書チェーンの生成

以下のPEM形式の証明書ファイルを結合します。

3. 証明書署名要求のバイナリを署名

証明書署名要求のバイナリをMDMベンダー証明書のRSA秘密鍵SHA1を使って署名したバイナリイメージをBase64で変換した文字列を生成します。

前述の手順で作成したイメージを元に、plistイメージの生成

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Inc//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PushCertRequestCSR</key>
<string>
証明書署名要求(*1)
</string>
<key>PushCertCertificateChain</key>
<string>
証明書チェーン(*2)
</string>
<key>PushCertSignature</key>
<string>
署名した証明書署名要求(*3)
</string>
</dict>
</plist>

plistイメージをBase64エンコード

plistイメージをBase64エンコードしたイメージをファイルに出力して、Apple Push Certificates Portalにアップロードします。

Apple社からMDM証明書をダウンロードする

Apple社にアップロードした後、MDM証明書のダウンロードボタンが有効となります。 ダウンロードされるMDM証明書はPEM形式のテキストファイルです。

github.com