2019年1月21日月曜日

FlashROMの書き換え

今までは、リスクをとった書き換えをやっていたが
http://continue-to-challenge.blogspot.com/2018/05/fon2405eopenwrt.html
一度できたマスターなROMからまるごとコピーする方法にした。
NaonoPIを有効活用してROMライターになってもらった。


左はFONでROM交換できるように交換用のソケットをつけた。
http://www.aitendo.com/product/16564
右はNanoPIでSPIラインをクリップをつけた。
http://www.aitendo.com/product/7311

準備

ハード

NanoPIのレイアウトは
http://wiki.friendlyarm.com/wiki/index.php/NanoPi_NEO#Diagram.2C_Layout_and_Dimension
【NanoPI】
pin name
17 3.3V  
19 SI
20 GND
21 SO
23 CLK
24 CS
【クリップ】
pin name
1 CS#  
2 SO
3 WP#(VCCへ)
4 GND
5 SI
6 SCLK
7 HOLD#(VCCへ)
8 VCC

ソフト

flashromをインストール
apt-get install flashrom
このあたりが参考になる
https://www.flashrom.org/RaspberryPi

読み書き

まずはデバイスを検出してみる

root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L1605A/MX25L1606E/MX25L1608E" (2048 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L1605D/MX25L1608D/MX25L1673E" (2048 kB, SPI) on linux_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L1605", "MX25L1605A/MX25L1606E/MX25L1608E", "MX25L1605D/MX25L1608D/MX25L1673E"
Please specify which chip definition to use with the -c <chipname> option.
2MのフラッシュROMだねー

読み込んでみる

root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0 -c "MX25L1605" -r /tmp/2m_base.img
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L1605" (2048 kB, SPI) on linux_spi.
Reading flash... done.
2m_base.imgに保存。これを8MBのフラッシュに書き込もうと思う。

書き込んでみる

ファイルサイズをデバイスのサイズに合わせる必要があるみたいなので
この場合は、8MBにする感じ。
root@NanoPi-NEO:~# dd if=/tmp/2m_base.img of=/tmp/8m_base.img ibs=8M conv=sync
0+1 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 0.238071 s, 35.2 MB/s
これを、8MBのフラッシュに書いてみる
root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6405" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6405D" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on linux_spi.
Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" (8192 kB, SPI) on linux_spi.
Multiple flash chip definitions match the detected chip(s): "MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E"
Please specify which chip definition to use with the -c <chipname> option.
書くときは、wでファイル名を指定する。
root@NanoPi-NEO:~# flashrom -p linux_spi:dev=/dev/spidev0.0 -c "MX25L6406E/MX25L6408E" -w /tmp/8m_base.img
flashrom v0.9.9-rc1-r1942 on Linux 4.14.52 (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Calibrating delay loop... OK.
Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on linux_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
これでOK。
フラッシュROMの書き換えが捗るぞー。
参考
https://qiita.com/yamori813/items/28c3fe71840c3277e409

2019年1月20日日曜日

MSP23S09をOpenwrtで使う(再)



半年前の記憶がもう怪しい・・・。
MSP23S09の使い方を思い出す。
https://continue-to-challenge.blogspot.com/2018/06/mcp23s09fon2405eledeopenwrt.html
のままだけど。

SPIを使うための準備

ハードの準備

前回は、ユニバーサル基板で実験したけど、今回は切削で基板を作ってみた。
FlashROMと、CS切り替え用のロジックとLEDx4とUARTが乗っている。
GPIOをCS1に割り当てるのだけど、もともとのCS0と確実に分けるために、not CS0を条件にしたロジックにしている。ものすごく割り切る場合には、CS1 = not CS0で良いんじゃないかと思う。
Deep MMC Old


ソフトの準備

spidevドライバを組み込むようにカーネルを再構築する。
http://continue-to-challenge.blogspot.com/2018/02/fon2405eledeopenwrtspi.html

簡易的な動作確認

/dev/spidev0.1ができているので
echo -en "\x40\x00\x00" > /dev/spidev0.1
で、MSP23S09を出力設定にする。
OPCODEが0x40、コマンドが0x00、入出力設定が0x00という具合
例えば、3を表示させる場合は
echo -en "\x40\x0A\xB0" > /dev/spidev0.1
ロジック・アナライザで出力を見てみると
https://www.saleae.com/ja/downloads/


※この時は試行錯誤していて0x41-0x0A-0x01になってるOrz

自作ドライバでの動作確認

クロスコンパイル環境とドライバ作成を思い出すぞ!
https://continue-to-challenge.blogspot.com/2018/01/fon2405eledeopenwrteclipse.html

クロスコンパイル環境

こんな感じ
Prefix「mipsel-openwrt-linux-musl-」
path「staging_dir/target-mipsel_24kc_musl/bin」
あとは前にやったのと変わりなし。
makeしてできたmcp23s09_7seg.koをscpでボードに転送する

動作確認

indmod mcp23s09_7seg.ko
echo -n 1 > /dev/mcp7dDriver0
で1が7セグに表示される。
段々と思い出してきた。

で、何やりたいかは忘れたOrz.

2019年1月18日金曜日

FON2405Eのフラッシュメモリを交換してOpenwrt導入(再)

久しぶりに、キャラクタ液晶をFONで制御しようと思って過去のやり方をもう一度やろうとしたらLinkももろも変更があって、そのままではできなかった。
再度、構築手順をまとめてみる。しばらくやらないと全く忘れているOrz.

まずは復習


Openwrtのソース取得→生成

 

クローンする


git clone -b openwrt-18.06 https://git.openwrt.org/openwrt/openwrt.git

または<git clone https://git.openwrt.org/openwrt/openwrt.git>

あるいは<git clone -b lede-17.01 https://git.openwrt.org/openwrt/openwrt.git>

場合によっては<git clone -b chaos_calmer git://git.openwrt.org/openwrt/svn-archive/openwrt.git>

cd openwrt

./scripts/feeds update -a

./scripts/feeds install -a

このあと、自分用にgogsにプッシュした。

ブランチを作る

ブランチを作成し、移動する。

git checkout -b fon2405ekai-base

git branch

* fon2405ekai-base

master

また、.gitignoreから/.configを削除してカーネルコンフィグも記録対象にした。

ベースとなる変更

とりあえず、必要最低限と思われる変更をしてみる

ソースの変更

ここに良い手順が書いてあった。
https://openwrt.org/docs/guide-developer/adding_new_device

grep -lri fon2405ekai target/

target/linux/ramips/image/rt305x.mk

target/linux/ramips/dts/FON2405EKAI.dts

target/linux/ramips/base-files/etc/diag.sh

target/linux/ramips/base-files/lib/ramips.sh

target/linux/ramips/base-files/lib/upgrade/platform.sh

変更点の差分は

diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh

index 2f51add..c076d18 100644

--- a/target/linux/ramips/base-files/etc/diag.sh

+++ b/target/linux/ramips/base-files/etc/diag.sh

@@ -26,6 +26,7 @@ get_status_led() {

ex2700|\

ex3700|\

fonera20n|\

+ fon2405ekai|\

firewrt|\

hg255d|\

iodata,wn-gx300gr|\

diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh

index 5741cbd..ddf9a41 100755

--- a/target/linux/ramips/base-files/lib/ramips.sh

+++ b/target/linux/ramips/base-files/lib/ramips.sh

@@ -721,6 +721,9 @@ ramips_board_detect() {

*"YK1")

name="youku-yk1"

;;

+ *"FON2405E Kai")

+ name="fon2405ekai"

+ ;;

esac

# use generic board detect if no name is set

diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh

index ffdc5e7..6785e92 100755

--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh

+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh

@@ -62,6 +62,7 @@ platform_check_image() {

f7c027|\

firewrt|\

fonera20n|\

+ fon2405ekai|\

freestation5|\

gnubee,gb-pc1|\

gnubee,gb-pc2|\

diff --git a/target/linux/ramips/dts/FON2405EKAI.dts b/target/linux/ramips/dts/FON2405EKAI.dts

new file mode 100644

index 0000000..18779c5

--- /dev/null

+++ b/target/linux/ramips/dts/FON2405EKAI.dts

@@ -0,0 +1,104 @@

+/dts-v1/;

+

+#include "rt3050.dtsi"

+

+#include <dt-bindings/gpio/gpio.h>

+#include <dt-bindings/input/input.h>

+

+/ {

+ compatible = "fon,fon2405ekai", "ralink,rt3050-soc";

+ model = "FON2405E Kai";

+

+ aliases {

+ led-boot = &led_power_green;

+ led-failsafe = &led_power_green;

+ led-running = &led_power_green;

+ led-upgrade = &led_power_green;

+ };

+

+ gpio-keys-polled {

+ compatible = "gpio-keys-polled";

+ poll-interval = <20>;

+

+ reset {

+ label = "reset";

+ gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;

+ linux,code = <KEY_RESTART>;

+ };

+

+ wps {

+ label = "wps";

+ gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;

+ linux,code = <KEY_WPS_BUTTON>;

+ };

+ };

+ gpio-leds {

+ compatible = "gpio-leds";

+ wan {

+ label = "fon2405ekai:green:wan";

+ gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;

+ };

+ led_power_green: lan {

+ label = "fon2405ekai:green:lan";

+ gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;

+ };

+ wps {

+ label = "fon2405ekai:green:wps";

+ gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;

+ };

+ };

+};

+

+&spi0 {

+ status = "okay";

+

+ m25p80@0 {

+ compatible = "jedec,spi-nor";

+ reg = <0>;

+ spi-max-frequency = <10000000>;

+

+ partitions {

+ compatible = "fixed-partitions";

+ #address-cells = <1>;

+ #size-cells = <1>;

+

+ partition@0 {

+ label = "u-boot";

+ reg = <0x0 0x10000>;

+ read-only;

+ };

+

+ devconf: partition@10000 {

+ label = "devconf";

+ reg = <0x10000 0x10000>;

+ read-only;

+ };

+

+ firmware: partition@20000 {

+ label = "firmware";

+ reg = <0x20000 0x7b0000>;

+ };

+ };

+ };

+};

+

+&pinctrl {

+ state_default: pinctrl0 {

+ gpio {

+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";

+ ralink,function = "gpio";

+ };

+ };

+};

+

+&ethernet {

+ mtd-mac-address = <&devconf 0x4>;

+};

+

+&esw {

+ mediatek,portmap = <0x2f>;

+};

+

+&wmac {

+ ralink,mtd-eeprom = <&devconf 0>;

+};

diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk

index 23a83f8..c807703 100644

--- a/target/linux/ramips/image/rt305x.mk

+++ b/target/linux/ramips/image/rt305x.mk

@@ -908,3 +908,11 @@ define Device/zorlik_zl5900v2

DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-ledtrig-netdev

endef

TARGET_DEVICES += zorlik_zl5900v2

+

+define Device/fon2405ekai

+ DTS := FON2405EKAI

+ BLOCKSIZE := 4k

+ IMAGE_SIZE := $(ralink_default_fw_size_8M)

+ DEVICE_TITLE := FON FON2405E KAI

+endef

+TARGET_DEVICES += fon2405ekai

Luciの有効化

lcuiについては、以下を参考にmake menuconfigで選択した。
https://openwrt.org/docs/guide-user/luci/luci.essentials-tomerge
uhttpd
uhttpd-mod-ubus
luci-mod-admin-full
luci-theme-bootstrap
luci-app-firewall
luci-proto-core
libiwinfo-lua

デフォルトのLAN側IPアドレスの変更

uciの初期設定に入れておくことで変更可能みたい
その他、シリアルコンソールログイン時にパスワード必要にしたり、
タイムゾーン変更したりといったものを入れておいた。
https://openwrt.org/docs/guide-user/base-system/uci
https://openwrt.org/docs/guide-user/base-system/system_configuration
https://openwrt.org/docs/guide-developer/uci-defaults

vi package/base-files/files/etc/uci-defaults/99_custom

#!/bin/sh

uci -q batch <<-EOT

set network.lan.ipaddr='192.168.2.1'

set system.@system[0].ttylogin='1'

set system.@system[0].zonename='Asia/Tokyo'

set system.@system[0].timezone='JST-9'

EOT


make menuconfig

make kernel_menuconfig

そしてカーネルイメージ作成

make -j4 V=99

ll bin/targets/ramips/rt305x

合計 6076

drwxr-xr-x 3 adeno adeno 4096 1月 10 01:04 ./

drwxr-xr-x 3 adeno adeno 4096 1月 10 00:57 ../

-rw-r--r-- 1 adeno adeno 21326 1月 10 00:57 config.seed

-rw-r--r-- 1 adeno adeno 2202 1月 10 01:04 openwrt-ramips-rt305x-device-fon2405ekai.manifest

-rw-r--r-- 1 adeno adeno 3075436 1月 10 01:04 openwrt-ramips-rt305x-fon2405ekai-initramfs-kernel.bin

-rw-r--r-- 1 adeno adeno 3097282 1月 10 01:04 openwrt-ramips-rt305x-fon2405ekai-squashfs-sysupgrade.bin

drwxr-xr-x 2 adeno adeno 4096 1月 10 01:04 packages/

-rw-r--r-- 1 adeno adeno 439 1月 10 01:04 sha256sums

u-bootを使って書き込む


[openwrt-ramips-rt305x-fon2405ekai-initramfs-kernel.bin]を使う。
書き込み手順はlinkと同じ。
具体的には以下の通り。

PC側にTFTPサーバー構築

以下を参考に
https://askubuntu.com/questions/201505/how-do-i-install-and-run-a-tftp-server
http://blog.livedoor.jp/devslife-other/archives/1313413.html
69/UDPを使うのでファイアウォールで許可しておく

PC側と接続

IPは10.10.10.3とした(FONのU-Bootのデフォルトがそうだから) 。
FON側はどっちのLANでもいいのかな? 黒い方(LAN側)に刺した。

書き込み

FONはリセットボタンを押しながら電源ONして、U-Bootの起動オプションで2を選択!
その後、 コマンドラインからサーバーIPなどを入力する

U-Boot 1.1.3 (Jan 6 2010 - 07:10:30)

  

Board: Fonera

DRAM: 32 MB

relocate_code Pointer at: 81fac000

spi_wait_nsec: 3e

spi deice id: c2 20 17 c2 20 (2017c220)

find flash: mx25l6405d

raspi_read: from:41030000 len:1000

Using default environment

  

##### The CPU freq = 320 MHZ ####

  

SDRAM bus set to 16 bit

SDRAM size =32 Mbytes

  

Please choose the operation:

1: Boot system code via Flash (default).

2: Load system code then write to Flash via TFTP.

3: Entr boot command line interface.

reset pressed for 2 seconds

  

You selected 2

0

  

2: System Load Linux Kernel then write to Flash via TFTP.

Warning!! Erase Linux in Flash then burn new one. Are you sure?(Y/N)

Please Input new ones /or Ctrl-C to discard

Input device IP (10.10.10.200) ==:10.10.10.200

Input server IP (10.10.10.3) ==:10.10.10.3

Input Linux Kernel filename (fonita.img) ==:openwrt201901.bin

  

netboot_common, argc= 3

  

NetTxPacket = 0x81FE4DC0

Trying Eth0 (10/100-M)

  

ETH_STATE_ACTIVE!!

Using Eth0 (10/100-M) device

TFTP from server 10.10.10.3; our IP address is 10.10.10.200

Filename 'openwrt201901.bin'.

  

TIMEOUT_COUNT=10,Load address: 0x80100000

Loading: Got ARP REPLY, set server/gtwy eth addr (00:07:40:**:**:**)

Got it

T #

first block received

################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

#################################################################

################

done

Bytes transferred = 3542258 (360cf2 hex)

NetBootFileXferSize= 00360cf2

raspi_erase_write: offs:20000, count:360cf2

raspi_erase: offs:20000 len:360000

raspi_write: to:20000 len:360000

raspi_read: from:380000 len:10000

raspi_erase: offs:380000 len:10000

raspi_write: to:380000 len:10000

Done!

## Booting image at bf020000 ...

raspi_read: from:20000 len:40

Image Name: MIPS OpenWrt Linux-4.14.91

Created: 2019-01-13 9:13:18 UTC

Image Type: MIPS Linux Kernel Image (lzma compressed)

Data Size: 3542194 Bytes = 3.4 MB

Load Address: 80000000

Entry Point: 80000000

raspi_read: from:20040 len:360cb2

書き込みが完了したので、アクセスしてみる

OpenWrt login: root

BusyBox v1.28.4 () built-in shell (ash)

  

_______ ________ __

| |.-----.-----.-----.| | | |.----.| |_

| - || _ | -__| || | | || _|| _|

|_______|| __|_____|__|__||________||__| |____|

|__| W I R E L E S S F R E E D O M

-----------------------------------------------------

OpenWrt 18.06-SNAPSHOT, r0+7650-d58c6ae

if you can dream it, you can do it.

-----------------------------------------------------

=== WARNING! =====================================

There is no root password defined on this device!

Use the "passwd"  command to set up a new password

in order to prevent unauthorized SSH logins.

--------------------------------------------------

root@OpenWrt:/#


なんか、markdown→stackedit→blogspotの連携がうまく行かない・・・。

2019年1月14日月曜日

LTE通信モジュールを使いたい(2) EC21

前回、LTE通信モジュールを使いたくていろいろ調べた。
その結果、「Quectel EC21-J Mini PCIeと開発キット」を入手することにした。

まずは繋いでみる


lsusbしてみると

lsusb
Bus 001 Device 004: ID 2c7c:0121

dmesgは

[ 444.433634] usb 1-1: new high-speed USB device number 4 using xhci_hcd
[ 444.591777] usb 1-1: New USB device found, idVendor=2c7c, idProduct=0121
[ 444.591794] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 444.591807] usb 1-1: Product: Android
[ 444.591818] usb 1-1: Manufacturer: Android
[ 444.720434] usbcore: registered new interface driver usbserial_generic
[ 444.720456] usbserial: USB Serial support registered for generic
[ 444.747139] usbcore: registered new interface driver option
[ 444.747935] usbserial: USB Serial support registered for GSM modem (1-port)
[ 444.748096] option 1-1:1.0: GSM modem (1-port) converter detected
[ 444.749945] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 444.751116] option 1-1:1.1: GSM modem (1-port) converter detected
[ 444.753384] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 444.753763] option 1-1:1.2: GSM modem (1-port) converter detected
[ 444.756743] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 444.756886] option 1-1:1.3: GSM modem (1-port) converter detected
[ 444.757054] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[ 444.766786] usbcore: registered new interface driver cdc_wdm
[ 444.774169] qmi_wwan 1-1:1.4: cdc-wdm0: USB WDM device
[ 444.775522] qmi_wwan 1-1:1.4 wwan0: register 'qmi_wwan' at usb-0000:00:14.0-1, WWAN/QMI device, 8a:7f:cf:**:**:**
[ 444.778205] usbcore: registered new interface driver qmi_wwan
[ 444.798019] qmi_wwan 1-1:1.4 wwp0s20u1i4: renamed from wwan0

udevルールに追加してデバイス名を固定する

EC21のデータシートを見ると
ttyUSB0 → DM
ttyUSB1 → For GPS NMEA message output
ttyUSB2 → For AT command communication
ttyUSB3 → For PPP connections or AT command communication
となっているので、ttyUSB2を別名で固定したい。
udevadmでは、

udevadm info -n /dev/ttyUSB2

P: /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.2/ttyUSB2/tty/ttyUSB2
N: ttyUSB2
S: serial/by-id/usb-Android_Android-if02-port0
S: serial/by-path/pci-0000:00:14.0-usb-0:1:1.2-port0
E: DEVLINKS=/dev/serial/by-id/usb-Android_Android-if02-port0 /dev/serial/by-path/pci-0000:00:14.0-usb-0:1:1.2-port0
E: DEVNAME=/dev/ttyUSB2
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.2/ttyUSB2/tty/ttyUSB2
E: ID_BUS=usb
E: ID_MM_CANDIDATE=1
E: ID_MODEL=Android
E: ID_MODEL_ENC=Android
E: ID_MODEL_FROM_DATABASE=Atom/Celeron/Pentium Processor x5-E8000/J3xxx/N3xxx Series USB xHCI Controller
E: ID_MODEL_ID=0121
E: ID_PATH=pci-0000:00:14.0-usb-0:1:1.2
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_1_1_2
E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
E: ID_REVISION=0318
E: ID_SERIAL=Android_Android
E: ID_TYPE=generic
E: ID_USB_CLASS_FROM_DATABASE=Miscellaneous Device
E: ID_USB_DRIVER=option
E: ID_USB_INTERFACES=:ffffff:ff0000:
E: ID_USB_INTERFACE_NUM=02
E: ID_USB_PROTOCOL_FROM_DATABASE=Interface Association
E: ID_VENDOR=Android
E: ID_VENDOR_ENC=Android
E: ID_VENDOR_FROM_DATABASE=Intel Corporation
E: ID_VENDOR_ID=2c7c
E: MAJOR=188
E: MINOR=2
E: SUBSYSTEM=tty
E: TAGS=:systemd:
E: USEC_INITIALIZED=2152830306

となっているので、必要な情報をついばんで
/etc/udev/rules.d/99-ec21j.rules を作成

# EC21-J

ACTION=="add", SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2c7c", ENV{ID_MODEL_ID}=="0121", ENV{ID_USB_INTERFACE_NUM}=="00", SYMLINK+="ttyUSB_EC21_dm"
ACTION=="add", SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2c7c", ENV{ID_MODEL_ID}=="0121", ENV{ID_USB_INTERFACE_NUM}=="01", SYMLINK+="ttyUSB_EC21_gps"
ACTION=="add", SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2c7c", ENV{ID_MODEL_ID}=="0121", ENV{ID_USB_INTERFACE_NUM}=="02", SYMLINK+="ttyUSB_EC21_at"
ACTION=="add", SUBSYSTEM=="tty", ENV{ID_VENDOR_ID}=="2c7c", ENV{ID_MODEL_ID}=="0121", ENV{ID_USB_INTERFACE_NUM}=="03", SYMLINK+="ttyUSB_EC21_atppp"

udevadm control --reload してからUSB再接続すると

ll /dev/ttyUSB*

crw-rw---- 1 root dialout 188, 0 1月 13 15:09 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 1月 13 15:09 /dev/ttyUSB1
crw-rw---- 1 root dialout 188, 2 1月 13 15:09 /dev/ttyUSB2
crw-rw---- 1 root dialout 188, 3 1月 13 15:09 /dev/ttyUSB3
lrwxrwxrwx 1 root root 7 1月 13 15:09 /dev/ttyUSB_EC21_at -> ttyUSB2
lrwxrwxrwx 1 root root 7 1月 13 15:09 /dev/ttyUSB_EC21_atppp -> ttyUSB3
lrwxrwxrwx 1 root root 7 1月 13 15:09 /dev/ttyUSB_EC21_dm -> ttyUSB0
lrwxrwxrwx 1 root root 7 1月 13 15:09 /dev/ttyUSB_EC21_gps -> ttyUSB1

できた!

wvdialをインストール

wvdialをインストールして設定ファイルを生成する。

apt-get install wvdial
wvdialconf /etc/wvdial.conf

wvdial.confを適宜修正する

[Dialer EC21]
Init1 = ATZ
Init2 = ATQ0 V1 E1 &C1 &D2
Modem Type = USB Modem
Baud = 9600
New PPPD = yes
Modem = /dev/ttyUSB_EC21_at
; Stupid Mode = 1
ISDN = 0
; Phone = <Target Phone Number>
; Password = <Your Password>
; Username = <Your Login Name>
Phone = *99***1#
Username = mio@iij
Password = iij
Init3 = AT+CGDCONT=1,"IP","iijmio.jp"

いざ接続


wvdial EC21
--> WvDial: Internet dialer version 1.61
--> Initializing modem.
--> Sending: ATZ
ATZ
OK
--> Sending: ATQ0 V1 E1 &C1 &D2
ATQ0 V1 E1 &C1 &D2
OK
--> Sending: AT+CGDCONT=1,"IP","iijmio.jp"
AT+CGDCONT=1,"IP","iijmio.jp"
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
ATDT*99***1#
CONNECT 150000000
--> Carrier detected. Waiting for prompt.
--> Don't know what to do! Starting pppd and hoping for the best.
--> Starting pppd at Sun Jan 13 13:37:48 2019
--> Pid of pppd: 15856
--> Using interface ppp0
--> local IP address 100.95.134.***
--> remote IP address 10.64.64.64
--> primary DNS address 202.232.2.2
--> secondary DNS address 202.232.2.3

これで、接続完了!

通信速度は?

気になる通信速度は、LTE通信MDはカテゴリ1 (下り10Mbps、上り5Mbps)なので、どんなものなのか測ってみた。


おぉ、下り6.6Mbps、上り3.8Mbpsと規格値の66%、76%程度出ている。すごいね。
今日はこれでおしまい。

2019年1月8日火曜日

LTE通信モジュールを使いたい(1)

IoTブームも落ち着いたところで、LTE通信モジュールを使ってみたくなった。
この分野は全く何も知らなかったので、いろいろ勉強になった。そのぶん勉強代も高くついたけど…。

目標

RaspiとかNanoPIでいい感じにLTE通信がしたい。
USBステックタイプの事例が多いので、天邪鬼的にminiPCIeやM.2のいわゆる通信モジュールを入手してやってみようと思った。ただ、最終的に契約したSIMを有効活用するために、USBタイプも入手するかも。

入手可能なLTE通信MD

当初、あまり深く考えずに、AmazonとかでLTE通信MDを検索して入手しようかと思った。
富士通? ANT30MO-01-C <M.2 KeyB> @3,980
モジュールのみで、アンテナなし
対応Band(3G) : Band I(2G) / Band VI(800M) / Band XIX(800M)
対応Band(LTE) : Band1(2G) / Band19(800M) / Band21(1.5G)
カテゴリ: LTE Cat.3 (下り100Mbps、上り50Mbps)
https://www.nttdocomo.co.jp/biz/support/iot/product/m038/
ドコモのIOT完了しているっぽい
これでも良いかと思ったけど、技適申請したアンテナが入手できるか不明だし、M.2<->USB変換アダプタでうまく動くのかと不安があったので、まずは違う通信MDを選ぶことにした。
ネットサーフィンしてると、SORACOMのAir SIMを使用する事例が多いように思えた。なので、、情報量も多いんだろうと思い。
Quectel EC21-J Mini PCIe @4,280
対応Band(3G) : 非サポート
対応Band(LTE) : Band1(2G) / Band3(1.7G) / Band19(800M)
カテゴリ: LTE Cat.1 (下り10Mbps、上り5Mbps)
https://www.nttdocomo.co.jp/biz/support/iot/product/m074/
こちらもドコモのIOT完了している
Quectel 3G/LTE Cat.1 モジュール開発ボードキット Mini PCIe EVBKIT @12,800
同梱のアンテナは技適取得済みの「HW-MULTI-GA-RSMA」らしい。サポートに聞いたら親切に教えてくれた。
をもろもろの安心料と信じてポチることにした。
しばらくお小遣いなしか…
ポチる時は調べて無くて、知らなかったけど、EC21のほうが通信スピード遅いのか。むーん。
対応Bandは、Band3か21かの違い。
参考
http://pctsuhanmax.com/smartphone/band.html

まとめるとこんな感じ

他にもいろいろあるみたいで、入手可能そうなものを調べたらこんな感じ。
ドコモ系のSIMを使うことになりそうなので、その方向で調査している。
ファーウェイとか気になるけど、今後日本との関係性がよくわかんないのでちょっと除外している。意外と少ない。なかなか小売しているのは無いのかねー。

名称 ANT30MO-01-C EC21-J LN930-AP EC-25J
メーカー 富士通? Quectel Telit Quectel
形状 M.2 KeyB Mini PCIe M.2 KeyB Mini PCIe
価格 アマゾン @3,980 SORACOM @4,280 eBay @3,535 eBay
備考 モジュールのみ アンテナなし 開発キットに、アンテナあり。link モジュールのみ アンテナなし KDDI対応?link その他にCANDY Pi Lite+ (Plus)としてlink @20,498 link キャリア毎に、モジュールが異なる?
3G I(2G) / VI(800M) / XIX(800M) 非サポート I(2G) / VI(800M) / XIX(800M) I(2G) / VI(800M) / XIX(800M)
共通バンド 1(2G)
ドコモ 3(1.7G) / 19(800M) /21(1.5G) ✕ / ○ / ○ ○ / ○ / ✕ ○ / ○ / ○ ○ / ○ / ✕
KDDI 11(1.5G) / 18(800M) / 26(800M) ✕ / ✕ / ✕ ✕ / ✕ / ✕ ○ / ○ / ✕ ✕ / ○ / ○
カテゴリ LTE Cat.3 (下り:100Mbps、上り:50Mbps) LTE Cat.1 (下り10Mbps、上り5Mbps) LTE Cat.4 (下り150Mbps、上り50Mbps) LTE Cat.4 (下り150Mbps、上り50Mbps)
ドコモIOT 完了 link 完了 link 完了 link 完了 link

こうやって見るとLN930-APが優れているように見えるけど、何か理由があるのかな。できれば全部ポチって比べてみたいけど。

どのSIMつかう?

通信MDが決まったところで、どのSIMを使おうかと
0SIMとか0SIMとか0SIMがいーなーと思っていたのだが、イニシャル費用が3,666円とかかかるので、くじけた。
そこで、スマホで使っているIIJmioで追加SIMという形にした。イニシャル費用は2,394円。ランニング費用が400円/月。
12/3までに気づいていれば、追加手数料2,000円が0円だったのにOrz
ということで、ドコモSIMを使用することにした。

いざ挑戦


LTE通信MDと開発ボードが届き、ようやく冷静になって色々調べ始めた。調べた通信MDは、ドコモHPにIOT(相互接続性試験)完了として記載されているものだった。という調べた結果が先の表。よく調べてから行動に移そうと思った。

EC21-J+Mini PCIe EVB Kitを使ってみる

と思ったのだが、この開発ボードに付属のアンテナが技適通っているかイマイチわからない。。。 →SORACOMのサポートに問い合わせしたら、同梱のアンテナは技適取得済みの「HW-MULTI-GA-RSMA @980」 らしい(技適対応しているものに入れ替えているとのこと)。SORACOMさん素敵!
なので、他のショッピングサイトではこの開発ボードlink
警告
本製品は技術基準適合証明を受けておりません。ご使用に際しては、電波法遵守のため、以下のいずれかの措置を取っていただく必要がありますのでご注意ください。電波法施行規則第 6 条第 1 項第 1 号に基づく平成 18 年 3 月 28 日総務省告示第 173 号で定められた電波暗室等の試験設備内で使用する。実験局の免許を取得したのち使用する。技術基準適合証明を取得したのち使用する。
と記載されている。
今日はここまで。

2019年1月6日日曜日

Canon MG6330をLinuxで使用する(再)

はじまり


4年くらい前にCanon MG6330をLinuxで使うためにチャレンジしたlink
自宅サーバーの環境移行に伴い、再度環境構築することになった。
当時のリンクはまだ残っていた。
http://cweb.canon.jp/cgi-bin/download/select-os.cgi?i_cd_pr_catg=011&i_cd_pr=3337&i_pr_search_word&i_fl_select_pr_catg=1

 ネットワーク構成


ネットワーク構成は、当時から随分変わって、シンプルになっているので省略。
プリンターもPCも同じセグメントに居る。
ただし、それぞれのlinux PCにドライバーを入れるのではなく、自宅サーバーにプリントサーバーも担ってもらうことにした。 と思ったけど、インストールが簡単そうなので、各PCに入れることにした。
4年前はMageia(rpm系)を使っていたけど、今はMint(debian系)になるので、パッケージが異なる。

インストール

まずはプリンタドライバと思ったら


[cnijfilter-mg6300series-3.80-1-deb.tar.gz]を展開して〜と思ったら。
プリンタの検索でMG6330が普通に認識された!!


以下、認識の手順
設定ツールを管理者権限で開かないと、プリンタ追加時にエラーとなったので注意。

1.CUPS 設定ツールを開く


sudo system-config-printer

GUIが起動して、プリンタの追加を選択するとウィザードが始まる

2.NetworkPrinterにCanon MG6300が表示される

複数の選択肢がある場合は[IPP network printer via DNS-SD]を選択した。


3.ドライバの選択

メーカー選択でCanon、モデル選択でMG6300
ドライバ選択でCanon MG6300 series CUPS+Guteprintの方を選択した。



4.テストページの印刷

テストページを印刷して、問題ないことを確認。
ウィザードを終了すると設定ツール画面でプリンタが追加されている。


スキャナーは?

ノートPCでは、Simple Scanですぐに認識されたのだけど、デスクトップではなぜか「検出できませんでした」と言われてしまった。
まぁスキャナーを使うことは、コピーかメディアに直接保存するかなので、困りはしない。
これで印刷が捗る。

2019年1月4日金曜日

2018年を振り返って

もう2019年になってしまったけど。
2018年を振り返って、色々なことがあった。

まずは「FON2405EのLEDE/Openwrtの導入」。
SPI通信を使って7セグやグラフィック液晶表示を行った。
なんちゃってドライバを作成したりと、頑張ったと思う。
wgetを使用してキャラクタ液晶に簡単な天気表示したのも面白かった。

あとは、VSCodeによるMarkdown環境を準備したり、dropbox代替としてnextcloudを導入したりと、環境を整えることに専念した。

その他
・今年は、何かと忙しくて、まとまった時間が確保できず、時間を作ることに試行錯誤した。
・趣味と仕事の境目が見えなくなってきてきた。どうしよう。
・楽しい教育は、なかなか実現できなかったね。

来年(今年)も引き続き家庭も仕事も趣味も充実するといいな。
 目標は
・戦略的な投資
・やりたいことをためらわずにやる
・「巨人の肩に乗る」
・「ググるよりもググられたい」
・頑張り過ぎないことを頑張る
去年とあまり変わらないか・・・。