Hatena::ブログ(Diary)

kinneko@転職先募集中の日記

検索エンジンから来た方へ: 申し訳ないですが、日記なので日々積み重なっています。
目的の情報にたどり着くには、右の検索窓から日記内を再検索してください。
北陸エリア内(もしくはエリア外でも)で転職先を探しています。
(マジです。ネタではありません。ホントですって...)
詳細履歴書をご希望の方はメールでご連絡下さいませ。(kinneko at gmail.com)
chromeで見ると、死ぬほど出るGoogleの広告がブロックできないので、
firefoxでABPを入れるとすっきり見られます。

2017-07-21

smartctlを実行するとエラーが出るドライブをseatoolしてみる

Error 9358 occurred at disk power-on lifetime: 21915 hours (913 days + 3 hours)

When the command that caused the error occurred, the device was active or idle.

ドライブはこれ。

=== START OF INFORMATION SECTION ===

Model Family: Seagate Barracuda 7200.14 (AF)

Device Model: ST1000DM003-9YN162

Serial Number: S1D212JR

LU WWN Device Id: 5 000c50 04b59ca33

Firmware Version: CC82

User Capacity: 1,000,204,886,016 bytes [1.00 TB]

Sector Sizes: 512 bytes logical, 4096 bytes physical

Rotation Rate: 7200 rpm

Device is: In smartctl database [for details use: -P show]

ATA Version is: ATA8-ACS T13/1699-D revision 4

SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s)

Local Time is: Fri Jul 21 10:27:34 2017 JST

SMART support is: Available - device has SMART capability.

SMART support is: Enabled

しかし、普通に書く分には問題なく動いている様子。全面ddは普通に通る。

root@ubuntu:~# dd if=/dev/zero of=/dev/sdb bs=100M status=progress

1000131788800 bytes (1.0 TB, 931 GiB) copied, 9616.44 s, 104 MB/s

dd: error writing '/dev/sdb': No space left on device

9539+0 records in

9538+0 records out

1000204886016 bytes (1.0 TB, 932 GiB) copied, 9618.34 s, 104 MB/s

もっとも、これでは使う気にはなれないんだけど。

1 Raw_Read_Error_Rate 0x000f 087 070 006 Pre-fail Always - 86951457

5 Reallocated_Sector_Ct 0x0033 083 083 036 Pre-fail Always - 22576

7 Seek_Error_Rate 0x000f 077 060 030 Pre-fail Always - 8695524939

Seagateって、Raw_Read_Error_Rateは買ったばかりでもこんな感じのようで、あんまり気にしないでいいのかも。ただ、Seek_Error_Rateは桁が異常な感じ。


seatoolを落としてくる。

root@ubuntu:~# wget http://www.seagate.com/files/www-content/support-content/downloads/seatools/_shared/downloads/seatools_cli.tar

root@ubuntu:~# tar xvf seatools_cli.tar

st

sthelp.txt

sthelpを見ると、2001年のツールのようだ。動くのかしらん。

root@ubuntu:~# ls -l st

-rwxr-xr-x 1 root root 180149 Sep 12 2001 st

root@ubuntu:~# ./st

-su: ./st: No such file or directory

動かないわ。

root@ubuntu:~# file st

st: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped

あらら。

root@ubuntu:~# apt-get install libc6-i386


接続ドライブのリストを取得。

root@ubuntu:~# ./st -l

GetSGVersions - open error: No such file or directory

Drive information:

/dev/sg0 ATA ST3500418AS CC44 976773167 blocks

/dev/sg1 ATA ST1000DM003-9YN1 CC82 1953525167 blocks


ターゲットの情報を取得。

root@ubuntu:~# ./st -i /dev/sg1

/dev/sg1

Vendor = ATA

Product = ST1000DM003-9YN1

Version = CC82

Serial Number =

Copyright =

SCSI Firmware =

Servo RAM Release =

Servo ROM Release =

Servo RAM Date =

Servo ROM Date =

Blocksize = 512, Highblock = 1953525167, Capacity = 976763 MB

-this is a Seagate drive

-this drive does not support DST

-Mode Page Settings [current value (default)]:

-WCE bit = 1 (1)

-RCD bit = 0 (0)

-AWRE bit = 1 (1)

-ARRE bit = 0 (0)

-DExcpt bit = 0 (0)

-Number of cache segments = 0 (0)

-JIT bit 0 = 0 (0)

-JIT bit 1 = 0 (0)

-JIT bit 2 = 0 (0)

-JIT bit 3 = 0 (0)

なんも取れてないなぁ...


ショートテストはパスしちゃう。

root@ubuntu:~# ./st -t 100 /dev/sg1

Drive /dev/sg1 does not support DST - generic short test will be run

Starting 100 % Generic Short Test on drive /dev/sg1 (^C will abort test)

-Starting 30 second sequential reads from block 0 on drive /dev/sg1

-Starting 30 second sequential reads to end of disk on drive /dev/sg1

-Starting 30 second random reads on drive /dev/sg1

-Starting 30 second random seeks on drive /dev/sg1

Generic Short Test PASSED on drive /dev/sg1

ロングテストではエラー。

root@ubuntu:~# ./st -T 100 /dev/sg1

Drive /dev/sg1 does not support DST - generic long test will be run

Starting generic long (full sequential verify) test (1953525167 blocks) on drive /dev/sg1 (^C will abort test)

VERIFY failed on block 20602368 Sense data = 21/00/00

TEST FAILED at block -144986080 on drive /dev/sg1

というわけでゴミ箱行き。


SeagateもWDもRMAが国内発送先になてったので、便利な時代だと思いました。

memo: https://support.wdc.com/warranty/warrantystatus.aspx?lang=jp

2017-07-04

HLS-C系1.13のtelnetアップデーターを作る

再度初期化された。

$ arp -a
(snip)
? (192.168.2.1) at ac:de:48:XX:XX:XX on bridge0 ifscope permanent [bridge]
? (192.168.2.136) at 34:76:c5:XX:XX:XX on bridge0 ifscope [bridge]
? (192.168.2.255) at ff:ff:ff:ff:ff:ff on bridge0 ifscope [bridge]

$ telnet 192.168.2.136
Trying 192.168.2.136...
telnet: connect to address 192.168.2.136: Connection refused
telnet: Unable to connect to remote host

当然、前に作った穴もふさがっている。

自前アップデーターで再度穴をあける。

1.13に上がっているので、前にやったアップデータをまた作る。

http://d.hatena.ne.jp/kinneko/20161024/p1


最新アップデーターをダウンロード。

http://www.iodata.jp/lib/product/h/5443.htm

$ ls -lh hlsc_f113.zip
-rw-r--r--@ 1 kinneko  staff    52M  7  4 13:09 hlsc_f113.zip

累積アップデーターなのでデカいわ。

こういうアップデート方式やめなはれ。

$ unzip hlsc_f113.zip
Archive:  hlsc_f113.zip
   creating: hlsc_f113/
  inflating: hlsc_f113/README.TXT
 extracting: hlsc_f113/update_HLS-C_1.13.tgz
$ mv hlsc_f113/update_HLS-C_1.13.tgz ./
$ rm hlsc_f113.zip
$ rm -rf hlsc_f113
$ tar zxvfp update_HLS-C_1.13.tgz
x ./
x ./landisk-update.sh
x ./for_HLS-C_series
x ./update-files.tar.gz
x ./setting-files.tar.gz
x ./rmlist
x ./flash_hlsc.env
x ./flash_hlsc.uboot

判定用のバージョン情報はここ。

$ cat for_HLS-C_series
1.13
$ echo "1.1301" > for_HLS-C_series
$ cat for_HLS-C_series
1.1301

アップデートの実行スクリプトはこれ。

$ vi landisk-update.sh

ubootのアップデートの後あたりに差し込み。

cat <<EOF >> /etc/init.d/rc.local

/usr/local/sbin/telnetd -l /bin/sh

EDF

固める。

$ tar zcvfp ../update_telnet_11301.tgz ./*
a ./flash_hlsc.env
a ./flash_hlsc.uboot
a ./for_HLS-C_series
a ./landisk-update.sh
a ./rmlist
a ./setting-files.tar.gz
a ./update-files.tar.gz
a ./update_HLS-C_1.13.tgz

ブラウザで管理UIからファームウエアとして流し込み。

本体が再起動します。

アップデート完了まで時間がかかりますので、

しばらく時間を置いてから再度ログオン画面からアクセスをお願いします。

HLS-C 1.1301へ更新を行います。

問題なく通った模様。

LEDが点滅をはじめてから、結構時間がかかる。


点滅がやんだので、接続してみる。

$ telnet 192.168.2.136
Trying 192.168.2.136...
Connected to 192.168.2.136.
Escape character is '^]'.

Debian GNU/Linux 4.0
sh-3.1#

無事成功。

2017-07-03

Raspiが起動時に自動的にパーティションを拡大するのを潰す

昔は、raspi-configとかで明示的にパーティション拡張をしてやる必要があった。

最近は、おせっかいなことに、起動時に自動的にパーティション拡張してしまう。

複製のためにイメージを小さく保っておきたい場合は、とてもめんどくさいことになる。

デフラグして、ファイルシステムを縮めて、パーティションを縮める。

この間に数値の一貫性がないので、ブロックサイズなどを考慮した変換が必要になる。


めんどくさいのでダウンロードしたRASPBIAN JESSIE LITEイメージを起動する前に潰しておく。

が、簡単だけどめんどくさい。

2箇所潰さないといけない。


準備

RASPBIAN JESSIE LITEをMacからSDに焼く。

約1.2GBある。

$ ls -lah /Users/kinneko/Downloads/Raspi3/2017-04-10-raspbian-jessie-lite.img
-rw-r--r--  1 kinneko  staff   1.2G  4 10 10:58 /Users/kinneko/Downloads/Raspi3/2017-04-10-raspbian-jessie-lite.img
$ diskutil umountdisk /dev/disk3
Unmount of all volumes on disk3 was successful
$ sudo dd if=2017-04-10-raspbian-jessie-lite.img of=/dev/rdisk3 bs=100m
12+1 records in
12+1 records out
1297862656 bytes transferred in 95.709816 secs (13560392 bytes/sec)

ブートローダーでinitが妙な指定になっているのを殺す

こちらは簡単に対応できる。

VFATになっている/bootにあるcmdline.txtの内容を書き換える。

WindowsからでもMacからでも簡単。

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=84fa8189-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh

のうちの、

init=/usr/lib/raspi-config/init_resize.sh

という部分だけを削除する。

書いていなければ、initは/sbin/initが自動選択される。

その実体は、systemdへのシンボリックリンクなので普通に起動する。


作業が終わったら取り出す。

$ diskutil eject /dev/disk3
Disk /dev/disk3 ejected

起動中に勝手にリサイズするのを防ぐ

もう1つあって、起動中に以下が動く。

/etc/init.d/resizefs_once

その実体を呼んでいるのはこいつ。

/etc/rc3.d/S01resizefs_once

これをext4のセカンドパーティションから削除しておく必要がある。

WindowsやMacから作業するのは困難だ。

別に起動用SDを用意したRaspiにUSBでマウントしてから作業するのがよさげ。

pi@raspberrypi:~ $ sudo mount /dev/sda2 /mnt/
pi@raspberrypi:~ $ ls -l /mnt/etc/init.d/resize2fs_once
-rwxr-xr-x 1 root root 560 Apr 10 09:27 /mnt/etc/init.d/resize2fs_once
pi@raspberrypi:~ $ sudo mv /mnt/etc/init.d/resize2fs_once /mnt/etc/init.d/_resize2fs_once

呼び出し元は削除してシステム終了しておく。

pi@raspberrypi:~ $ sudo ls -l /mnt/etc/rc3.d/S01resize2fs_once
lrwxrwxrwx 1 root root 24 Apr 10 09:27 /mnt/etc/rc3.d/S01resize2fs_once -> ../init.d/resize2fs_once
pi@raspberrypi:~ $ sudo rm /mnt/etc/rc3.d/S01resize2fs_once
pi@raspberrypi:~ $ sudo shutdown -h now

確認

あ、sshをオンにしとくの忘れた...

Macに再接続。

$ mkdir /Volumes/boot/ssh

再度起動確認。

pi@raspberrypi:~ $ sudo fdisk -l /dev/mmcblk0

Disk /dev/mmcblk0: 7.4 GiB, 7932477440 bytes, 15493120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x84fa8189

Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1       8192   92159   83968   41M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      92160 2534887 2442728  1.2G 83 Linux

自動で拡張されていないのが確認できた。

2017-06-29

Raspi3にボタンを付けたときのチャタリング防止

Raspi1では遅くて置きなかったシェルスクリプトでのボタン検知のチャタリング。

Raspi3ではとても激しくて、ちょっと押すと10-16くらい返ってくる。

Raspi1でもちゃんと書いとけって話だけどね。

Pythonでちゃんと書いている人も多い中、シェルスクリプトで実装しているので書くのめんどくさいんですよ。

んで、簡単にこんな方法でやってしまいました。ごめんなさい。

良い子は真似しないでね。

$ cat button.sh
#!/bin/bash
gpio -g mode 27 in
gpio -g mode 27 up
while :; do
  button_status=`gpio -g read 27`
  if [ $button_status -eq 0 ]; then
    echo 'button on'
    sleep 0.3
    echo
  fi
done

ボタン検知したら、0.3秒寝かせるのがポイント。

一行で実装できた!

できるだけ早く連打すると、たまに検知できないことあるけど、普通は連打しても大丈夫。

後のechoだけの行はチャタリング検知用なのでなくていいです。


ほんとに、良い子は真似してはいけないですよ。

2017-06-27

Raspi3で内蔵USB Audioを無効にしてみたが...

とても遠回りな話になるので、結果だけ知りたい人は一番最後をどうぞ。


Raspi3のイヤホンジャックでもノイズは乗るので、内蔵USB-AudioをRaspi1と同じように止める。

pi@raspberrypi:~ $ cat /etc/modprobe.d/blacklist-snd_bcm2835.conf
blacklist snd_bcm2835
pi@raspberrypi:~ $ sudo reboot

後刺ししたUSB Audioだけを認識するようになったのだけど...

pi@raspberrypi:~ $ cat /proc/asound/cards
 1 [Xmod           ]: USB-Audio - Creative Xmod
                      Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed

alsaがダメっぽい。

pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4259:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4738:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default
aplay: main:722: audio open error: No such file or directory

Card0を見に行ったけどないという言い分。

なるほどUSB AudioはCard1になっている。

pi@raspberrypi:~ $ cat /proc/asound/modules
 1 snd_usb_audio

Card 0は予約になっているのかな?

設定を変更しようにも起動しない。

pi@raspberrypi:~ $ sudo amixer controls
amixer: Control default open error: No such file or directory

これはできる。

pi@raspberrypi:~ $ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=Xmod
    Creative Xmod, USB Audio
    Default Audio Device
sysdefault:CARD=Xmod
    Creative Xmod, USB Audio
    Default Audio Device
front:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    Front speakers
surround21:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    Direct sample mixing device
dsnoop:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    Direct sample snooping device
hw:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    Direct hardware device without any conversions
plughw:CARD=Xmod,DEV=0
    Creative Xmod, USB Audio
    Hardware device with all software conversions

優先度設定だけか。


ここじゃなさそう。

pi@raspberrypi:~ $ cat /lib/modprobe.d/aliases.conf
# These are the standard aliases and dependencies.
# This file does not need to be modified.

# prevent unusual drivers from appearing as the first sound device ###########
options snd-pcsp index=-2
options snd-usb-audio index=-2
options cx88_alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2

# work around other kernel issues ############################################
# The EHCI driver should be loaded before the ones for low speed controllers
# or some devices may be confused when they are disconnected and reconnected.
softdep uhci-hcd pre: ehci-hcd
softdep ohci-hcd pre: ehci-hcd

書き換えてみる。

pi@raspberrypi:~ $ sudo vi /lib/modprobe.d/aliases.conf
#options snd-usb-audio index=-2
options snd-usb-audio index=1
pi@raspberrypi:~ $ sudo reboot

pi@raspberrypi:~ $ cat /proc/asound/modules
 1 snd_usb_audio
pi@raspberrypi:~ $ cat /proc/asound/cards
 1 [Xmod           ]: USB-Audio - Creative Xmod
                      Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed

番号は1のまま。


追っかけたい病になりかかるが、こんなとこで時間使ってもしょうがないので、内蔵ドライバ有効にして設定したら何か吐かれるんじゃないかと再起動。

pi@raspberrypi:~ $ sudo vi /etc/modprobe.d/blacklist-snd_bcm2835.conf
pi@raspberrypi:~ $ sudo reboot
pi@raspberrypi:~ $ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio
pi@raspberrypi:~ $ amixer controls
numid=3,iface=MIXER,name='PCM Playback Route'
numid=2,iface=MIXER,name='PCM Playback Switch'
numid=1,iface=MIXER,name='PCM Playback Volume'
numid=5,iface=PCM,name='IEC958 Playback Con Mask'
numid=4,iface=PCM,name='IEC958 Playback Default'
pi@raspberrypi:~ $ amixer cget numid=3
numid=3,iface=MIXER,name='PCM Playback Route'
  ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0
  : values=1

アナログ固定になっている。

自動にしたらいいのかな?

pi@raspberrypi:~ $ amixer cset numid=3 0
numid=3,iface=MIXER,name='PCM Playback Route'
  ; type=INTEGER,access=rw------,values=1,min=0,max=2,step=0
  : values=0

pi@raspberrypi:~ $ sudo vi /etc/modprobe.d/blacklist-snd_bcm2835.conf
pi@raspberrypi:~ $ sudo reboot

だめ。

ブート時に無効にする。

pi@raspberrypi:~ $ sudo vi /boot/config.txt
# Enable audio (loads snd_bcm2835)
dtparam=audio=on

にはなっている。

コメントアウトして再起動。

pi@raspberrypi:~ $ cat /proc/asound/modules
 1 snd_usb_audio
pi@raspberrypi:~ $ amixer controls
amixer: Control default open error: No such file or directory

変わらず。


アプローチを変える。Card1はどうなっているのか。

pi@raspberrypi:~ $ ls -l /proc/asound/card0
ls: cannot access /proc/asound/card0: No such file or directory
pi@raspberrypi:~ $ ls -l /proc/asound/card1
total 0
-r--r--r-- 1 root root 0 Jun 27 04:05 id
dr-xr-xr-x 3 root root 0 Jun 27 04:05 pcm0c
dr-xr-xr-x 3 root root 0 Jun 27 04:05 pcm0p
-r--r--r-- 1 root root 0 Jun 27 04:05 stream0
-r--r--r-- 1 root root 0 Jun 27 04:05 usbbus
-r--r--r-- 1 root root 0 Jun 27 04:05 usbid
-r--r--r-- 1 root root 0 Jun 27 04:05 usbmixer

pi@raspberrypi:~ $ amixer -c 1 controls
numid=4,iface=MIXER,name='PCM Playback Switch'
numid=5,iface=MIXER,name='PCM Playback Volume'
numid=9,iface=MIXER,name='PCM Capture Source'
numid=6,iface=MIXER,name='Line Capture Volume'
numid=7,iface=MIXER,name='Mic Capture Volume'
numid=8,iface=MIXER,name='Auto Gain Control'
numid=3,iface=MIXER,name='Up Down Switch'
numid=2,iface=PCM,name='Capture Channel Map'
numid=1,iface=PCM,name='Playback Channel Map'

Playback Routeがないな?そんなもの?

pi@raspberrypi:~ $ cat /proc/asound/devices
 32: [ 1]   : control
 33:        : timer
 48: [ 1- 0]: digital audio playback
 56: [ 1- 0]: digital audio capture

pi@raspberrypi:~ $ cat /proc/asound/modules
 1 snd_usb_audio
pi@raspberrypi:~ $ cat /proc/asound/cards
 1 [Xmod           ]: USB-Audio - Creative Xmod
                      Creative Technology Ltd Creative Xmod at usb-3f980000.usb-1.4, full speed
pi@raspberrypi:~ $ cat /proc/asound/pcm
01-00: USB Audio : USB Audio : playback 1 : capture 1

普通に見える。

設定はできる?

pi@raspberrypi:~ $ amixer -c 1 cset numid=3
numid=3,iface=MIXER,name='Up Down Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
pi@raspberrypi:~ $ amixer -c 1 cset numid=3 1
numid=3,iface=MIXER,name='Up Down Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
pi@raspberrypi:~ $ amixer -c 1 cset numid=1
amixer: Control hw:1 element write error: Operation not permitted

こっち方面からじゃないか。


asound.confを作るしかない?

pcm.!default {

type hw

card 1

}

ctl.!default {

type hw

card 1

}

なんかイヤだな。


ソースのデフォルト0を書き換えてビルドした人の例。

https://www.crifan.com/resolved_amixer_control_default_open_error_no_such_file_or_directory/

さすがにこれはないか。


お作法的に問題ないalsaのデフォルトを変更する設定ファイルを探す。

pi@raspberrypi:~ $ grep "defaults.pcm.card " -R /usr/share/alsa/alsa.conf
defaults.pcm.card 0
pi@raspberrypi:~ $ grep "defaults.pcm.device " -R /usr/share/alsa/alsa.conf
defaults.pcm.device 0
pi@raspberrypi:~ $ grep cards.pcm.default /usr/share/alsa/alsa.conf
pcm.default cards.pcm.default
pcm.sysdefault cards.pcm.default

これを1にしてしまうか、それともUSB Audioロードの番号を1にするか。

USB-Audioのほうには、それっぽいのはなさそう。

pi@raspberrypi:~ $ grep pcm.default -R /usr/share/alsa/cards/USB-Audio.conf
USB-Audio."AudioPhile".pcm.default "cards.USB-Audio.Audiophile USB (tm).pcm.default"
USB-Audio."Audiophile USB (tm)".pcm.default {
USB-Audio.pcm.default {
					"cards.USB-Audio.pcm.default_playback_dmix_"
USB-Audio.pcm.default_playback_dmix_yes {
USB-Audio.pcm.default_playback_dmix_no {

書き換える。

pi@raspberrypi:~ $ sudo vi /usr/share/alsa/alsa.conf
defaults.ctl.card 1
defaults.pcm.card 1
defaults.pcm.device 1
pi@raspi09:~ $ sudo reboot

来た!

pi@raspberrypi:~ $ amixer controls
numid=4,iface=MIXER,name='PCM Playback Switch'
numid=5,iface=MIXER,name='PCM Playback Volume'
numid=9,iface=MIXER,name='PCM Capture Source'
numid=6,iface=MIXER,name='Line Capture Volume'
numid=7,iface=MIXER,name='Mic Capture Volume'
numid=8,iface=MIXER,name='Auto Gain Control'
numid=3,iface=MIXER,name='Up Down Switch'
numid=2,iface=PCM,name='Capture Channel Map'
numid=1,iface=PCM,name='Playback Channel Map'
pi@raspi09:~ $ amixer cset numid=3
numid=3,iface=MIXER,name='Up Down Switch'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on

再生してみる。

pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
aplay: main:722: audio open error: No such file or directory

ダメ。

dmixの設定を変えてないかな?

pi@raspberrypi:~ $ cat /usr/share/alsa/alsa.conf | grep dmix
defaults.pcm.dmix.max_periods 0
defaults.pcm.dmix.rate 48000
defaults.pcm.dmix.format "unchanged"
defaults.pcm.dmix.card defaults.pcm.card
defaults.pcm.dmix.device defaults.pcm.device
pcm.dmix cards.pcm.dmix
pi@raspberrypi:~ $ cat /usr/share/alsa/alsa.conf | grep cards.pcm.dmix
pcm.dmix cards.pcm.dmix

関係ない感じ。


再度方針転換。

オーディオデバイスのストリームを直接指定してみる。

pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: Xmod [Creative Xmod], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay -Dhw:1,0
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
aplay: set_params:1239: Channels count non available

ダメだな。

pi@raspberrypi:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこ とを書いてみようと思います。 | aplay -D plughw:1,0
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

出た!


最初から、-D plughw:1,1とかにしておけばよかったってことか...

/boot/config.txtとalsa.conf戻してrebootする。

再生。

pi@raspi09:~ $ ./aquestalkpi/AquesTalkPi -v f2 主に音声合成について思ったこを書 いてみようと思います。 | aplay -D plughw:1,0
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono

できんじゃん... orz