wheezyでファームウェアの組み込み

以前にetchで構成したときと同じように玄箱PROならではのマイコン制御などを使えるようにしておく。
Lennyあたりから玄箱PROが標準サポートされているみたいなので改めてメモを残す。

/mntの構成

まずはNANDブート時と同じ/mntの構成にしておく
mkdir /mnt/authtest
mkdir /mnt/boot
mkdir /mnt/disk1
mkdir /mnt/mtd
mkdir /mnt/nfs
mkdir /mnt/ram
mkdir /mnt/root
mkdir /mnt/rootfs
mkdir /mnt/usbdisk1
mkdir /mnt/usbdisk2

マイコン制御

以前は/usr/local/buffalo以下にあったmiconaplを使えるように構成していたが、いまはmicro-evtdパッケージに含まれるmicroaplが使えるらしい
これでファン制御も電源ボタン制御もできるみたい
KUROBOX-PRO:~# aptitude show micro-evtd
Package: micro-evtd
State: installed
Automatically installed: no
Version: 3.4-2
Priority: optional
Section: utils
Maintainer: Ryan Tandy <ryan@nardis.ca>
Architecture: armel
Uncompressed Size: 101 k
Depends: libc6 (>= 2.7)
Description: Linkstation Pro/Kurobox Pro special features support
 This package provides micro-evtd, a daemon to monitor and control the watchdog timer,
 fans and buttons on the Linkstation Pro/Kurobox Pro family of NAS devices, and microapl,
 a utility to control the status LEDs and buzzer as well as the above.
Homepage: http://www.sourceforge.net/projects/ppc-evtd
というわけではじめから導入されているので、追加の設定は不要みたい
KUROBOX-PRO:~# microapl -a temp_get
#[microapl.temp_get]
temp=30[C-degs]
ちゃんと動いてる。
コマンドはこんな感じ
KUROBOX-PRO:~# microapl
option: boot_start
boot_end
power_off
shutdown_wait
shutdown_cancel
skip_standby
delay_standby [arg]
standby_remaining
standby
reboot
temp_get
fan_set_speed [arg]
fan_get_speed
bz_on [arg]
bz_set_freq [arg]
bz_melody tempo note ...
bz_imhere tempo note ...
int_get_switch_status [arg]
led_set_bright [arg]
led_set_cpu_mcon [arg]
led_set_on_off [arg]
led_set_blink [arg]
led_set_code_error [arg]
led_set_code_information [arg]
led_set_cpu_mcon [arg]
mcon_get_status
hdd_set_power [arg]
mcon_get_version

ファン制御

現時点でどうなっているのか確認してみる。
KUROBOX-PRO:~# microapl -a temp_get
#[microapl.temp_get]
temp=30[C-degs]
KUROBOX-PRO:~# microapl -a fan_get_speed
#[microapl.fan_get_speed]
fan_rpm=1800rpm
30度で1800rpm、となっているが設定上のstop,slow,fast,fullのどれだか分からない。
KUROBOX-PRO:~# microapl -a fan_set_speed stop
KUROBOX-PRO:~# microapl -a fan_get_speed
#[microapl.fan_get_speed]
fan_rpm=0rpm
もちろんstopだと0
KUROBOX-PRO:~# microapl -a fan_set_speed slow
KUROBOX-PRO:~# microapl -a fan_get_speed
#[microapl.fan_get_speed]
fan_rpm=1770rpm
slowだと1800rpmくらいか、さっきはslowだったと思われる。
KUROBOX-PRO:~# microapl -a fan_set_speed fast
KUROBOX-PRO:~# microapl -a fan_get_speed
#[microapl.fan_get_speed]
fan_rpm=2610rpm
fastだと2600rpm
KUROBOX-PRO:~# microapl -a fan_set_speed full
KUROBOX-PRO:~# microapl -a fan_get_speed
#[microapl.fan_get_speed]
fan_rpm=3480rpm
fullで3400rpm
設定ファイルはどうなっているかというと
KUROBOX-PRO:~# cat /etc/micro-evtd.conf
# micro-evtd Configuration File

#
# $Id$
#

# Tmp/ram disk location
# Linkstations have a ramdisk for /tmp, so sub-folders normally get lost
# TMP=/tmp

# Debug log file location
# LOG=/var/log

# Advanced use only.  Will log events when enabled
# DEBUG=0

# Default on, set to off to disable fan control or fixed speed 1-4
# MONITOR=ON

# Default 40 seconds and ON, daemon refresh rate and status update demand
# REFRESH=40,ON

# Default 30 seconds, fan stationary timer
# FANSTOP=30

# Default 35 45 50 60, temperature/fan controls
# 35 - slow, normal running ~33 C-deg
# 45 - fast
# 50 - full
# 60 - Too hot alarm, overheat
# TEMP-RANGE=35 45 50 60

# Default yes, set to YES to use average sampled temp to
# give a smoother control of fan speed
# TREND=YES

# Default 2, specify fan/temp control hysteresis 1-5
# HYSTERESIS=2

# Default is shutdown, specify action of button events
# BUTTON=SHUTDOWN

# Low power (standby) timer control
# SUN-SAT=

# Delay standby event owing to following present processes
# DELAY-STANDBY=
KUROBOX-PRO:~#
よくみる静かな設定が↓なので、その設定にしたいが、デフォルトの方が閾値が高くなっているようす
stop    -       20
slow    20      35
fast    35      45
full    45
とりあえず、DEBUG、SUN-SAT、DELAY-STANDBY以外はコメントを外してようすをみる
KUROBOX-PRO:~# /etc/init.d/micro-evtd restart
Restarting Daemon for Linkstation/Kuro micro controller: micro-evtd.

uBoot環境設定

以前は/usr/local/buffalo以下にあったnvramを使えるように構成していたが、uboot-envtoolsでfw_printenvやfw_setenvが使えるらしい
KUROBOX-PRO:~# which fw_printenv
/usr/bin/fw_printenv
KUROBOX-PRO:~# which fw_setenv
/usr/bin/fw_setenv
KUROBOX-PRO:~# find /etc -name fw_env.config
KUROBOX-PRO:~# fw_printenv
Cannot parse config file: No such file or directory
デフォルトではこんな状態。設定ファイルが無いので動かない。
fw_env.configを配置すればよさそうだが、どんな設定をすればよいのか分からない。
uboot-envtoolsを入れると配置されるkurobox_pro.configをコピーするような記述を見かけるが、とりあえず今どういう状況なのか確認してみる。
KUROBOX-PRO:~# aptitude show uboot-envtools
Package: uboot-envtools
State: not installed
Version: 20081215-3+2012.04.01-2
Priority: extra
Section: utils
Maintainer: Clint Adams <clint@debian.org>
Architecture: all
Uncompressed Size: 64.5 k
Depends: u-boot-tools
Description: read/modify the environment for the U-Boot boot loader (transitional package)
 Package to ease upgrading from uboot-envtools to u-boot-tools.

 This package may safely be removed.
Homepage: http://www.denx.de/wiki/U-Boot/
導入されていないみたいだけど、まずは設定ファイルの配置だけでいけるか確認してみる
kurobox_pro.configの内容を探してきた。
KUROBOX-PRO:~# vi /etc/fw_env.config
# Configuration file for fw_(printenv/saveenv) utility.
# Up to two entries are valid, in this case the redundant
# environment sector is assumed present.

# MTD device name Device offset Env. size Flash sector size
/dev/mtd0 0x3F000 0x1000 0x1000
これで保存して、fw_printenvを試してみる。
KUROBOX-PRO:~# fw_printenv
baudrate=115200
loads_echo=0
ipaddr=192.168.11.150
serverip=192.168.11.1
rootpath=/nfs/arm
cpuName=926
CASset=min
MALLOC_len=4
bootargs_end=:::DB88FXX81:eth0:none
ethact=egiga0
ethaddr=XX:XX:XX:XX:XX:XX
stdin=serial
stdout=serial
stderr=serial
enaMonExt=no
enaFlashBuf=yes
enaCpuStream=no
ethprime=egiga0
buffalo_ver=BOOTVER=1.091
build_time=18:10:02
initrd=initrd.buffalo
kernel=uImage.buffalo
nand_uImage_offset=20000
default_initrd_addr=0x02000000
def_tftp=tftp $(default_kernel_addr) $(kernel); tftp $(default_initrd_addr) $(initrd); setenv bootargs $(bootargs_base) $(bootargs_root)  rw initrd=0x02000040,20M panic=5 $(buffalo_ver); bootm $(default_kernel_addr) $(default_initrd_addr)
bootdelay=3
disaMvPnp=no
overEthAddr=no
usb0Mode=host
usb1Mode=host
default_kernel_addr=0x00100000
bootargs_base=console=ttyS0,115200
bootargs_root=root=/dev/mtdblock2 rw panic=5
bootargs=$(bootargs_base) $(bootargs_root) $(buffalo_ver)
nand_boot=yes
bootcmd=ide reset; ext2load ide 0:1 $(default_kernel_addr) /$(kernel); ext2load ide 0:1 $(default_initrd_addr) /$(initrd); setenv bootargs $(bootargs_base); bootm $(default_kernel_addr) $(default_initrd_addr)
動いた。問題なさそう。
ついでにfw_setenvでnand_bootあたりを書き換えてみる
KUROBOX-PRO:~# fw_setenv nand_boot no
KUROBOX-PRO:~# fw_printenv
:
:
nand_boot=no
問題なさそう。戻しておく。
KUROBOX-PRO:~# fw_setenv nand_boot yes
最終更新:2015年03月13日 10:50