Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.11.2014, 16:23   #1
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию MPD+MPC+CIFS

Собрал свою прошивку для TL-MR3020.
Основная задача воспроизводить музыку с общей сетевой папки.
Управление с телефонов или компьютера.
Собралось все очень плотно.
Код HTML:
df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                   14652        28     14624   0% /
/dev/root                 3072      3072         0 100% /rom
tmpfs                    14656        36     14620   0% /tmp
tmpfs                      512         0       512   0% /dev
root                     14652        28     14624   0% /tmp/root
overlayfs:/tmp/root      14652        28     14624   0% /
В итоге места на внутренней памяти роутера нет. Изменения в настройках сохраняются только до перезагрузки. Если отключить питание, то приходится все снова настраивать.
Флешку для увеличения памяти подключать не стал так как с ней возникают некоторые проблемы да и выглядит все не совсем презентабельно вместе с usb-хабом. Поэтому все пакеты решил попробовать втиснуть во внутреннюю память.
Что из этого можно безболезненно удалить и как?
Код HTML:
lsmod
Module                  Size  Used by    Tainted: G
snd_usb_audio          70304  0
snd_usbmidi_lib        13776  1 snd_usb_audio
ath79_wdt               2240  1
ledtrig_usbdev          2032  0
ledtrig_netdev          3184  0
ehci_hcd               33616  0
ipt_REJECT              1792  0
xt_TCPMSS               1824  0
ipt_LOG                 6048  0
xt_comment               400  0
xt_multiport            1104  0
xt_mac                   528  0
xt_limit                 944  0
iptable_mangle           832  0
iptable_filter           592  0
ip_tables               8864  2 iptable_mangle,iptable_filter
xt_tcpudp               1632  0
x_tables                9984 11 ipt_REJECT,xt_TCPMSS,ipt_LOG,xt_comment,xt_multiport,xt_mac,xt_limit,iptable_mangle,iptable_filter,ip_tables,xt_tcpudp
snd_pcm_oss            32112  0
snd_mixer_oss          12240  1 snd_pcm_oss
snd_pcm                48464  2 snd_usb_audio,snd_pcm_oss
snd_timer              13616  1 snd_pcm
snd_rawmidi            13728  1 snd_usbmidi_lib
snd_seq_device          3936  1 snd_rawmidi
snd_hwdep               4160  1 snd_usb_audio
snd_page_alloc          4256  1 snd_pcm
snd                    33488  9 snd_usb_audio,snd_usbmidi_lib,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer,snd_rawmidi,snd_seq_device,snd_hwdep
soundcore               3424  1 snd
cifs                  224048  0
ath9k                  56832  0
ath9k_common            6992  1 ath9k
ath9k_hw              293904  2 ath9k,ath9k_common
ath                    19424  3 ath9k,ath9k_common,ath9k_hw
mac80211              285264  1 ath9k
usbcore                99104  5 snd_usb_audio,snd_usbmidi_lib,ledtrig_usbdev,ehci_hcd
usb_common               480  1 usbcore
nls_base                4640  2 cifs,usbcore
cfg80211              188880  4 ath9k,ath9k_common,ath,mac80211
compat                  9920  4 ath9k,ath9k_common,mac80211,cfg80211
input_core             20016  0
md5                     1424  0
md4                     2912  0
hmac                    2224  0
ecb                     1248  0
des_generic            18720  0
arc4                     768  2
aes_generic            29808  0
crypto_blkcipher        9600  1 ecb
cryptomgr               1840  0
aead                    3920  1 cryptomgr
crypto_hash             7888  4 cifs,md5,md4,hmac
crypto_algapi           9200  9 hmac,ecb,des_generic,arc4,aes_generic,crypto_blkcipher,cryptomgr,aead,crypto_hash
ledtrig_timer           1072  0
ledtrig_default_on       416  0
leds_gpio               1552  0
gpio_button_hotplug     3200  0
Или может быть другая причина по которой не сохраняются изменения в файлах?

Последний раз редактировалось St@rz; 04.11.2014 в 16:31.
St@rz вне форума   Ответить с цитированием
Старый 05.11.2014, 10:32   #2
cyberlab
Senior Member
 
Регистрация: 25.11.2013
Сообщений: 116
Вес репутации: 0
cyberlab is an unknown quantity at this point
По умолчанию Re: MPD+MPC+CIFS

Все верно причина в том что не хватает памяти
cyberlab вне форума   Ответить с цитированием
Старый 06.11.2014, 01:11   #3
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

Цитата:
Сообщение от cyberlab Посмотреть сообщение
Все верно причина в том что не хватает памяти
Нашел другую причину.
В Target Images при сборке не включил JFFS2.
St@rz вне форума   Ответить с цитированием
Старый 06.11.2014, 20:15   #4
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

Тестирую прошивку.
Пока все очень нравится.
Музыка не заикается!!!
Все проигрывается отлично. Скорее всего за счет использования только внутренней памяти и сетевого диска.
Добавляется огромная коллекция песен (mp3, flac) и интернет-радио.
Управляется с телефона и компьютера. Так как описано тут.
После тестирования выложу описание процесса сборки, настройки и саму прошивку.

Сейчас осталось добавить в ядро поддержку русской кодировки и настроить регулировку громкости.
Какой mixer лучше всего использовать?

Последний раз редактировалось St@rz; 06.11.2014 в 20:49.
St@rz вне форума   Ответить с цитированием
Старый 06.11.2014, 21:12   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: MPD+MPC+CIFS

Цитата:
Какой mixer лучше всего использовать?
А что есть выбор? Я только с Alsa смог регулировать
Admin вне форума   Ответить с цитированием
Старый 07.11.2014, 10:31   #6
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

Цитата:
Сообщение от Admin Посмотреть сообщение
А что есть выбор? Я только с Alsa смог регулировать
Есть вариант с oss.
Цитата:
Сообщение от avg_joe
Камрады, огромное спасибо всем, кто писал инструкции. Смог запилить себе радио на железке Viewcon VE533. Сабж имеет 4 кнопки, но события отлавливаются только с 3-х. Вот конфиг mpd:
Код:
port                    "6600"
music_directory         "/opt/.mpd/music"
playlist_directory      "/opt/.mpd/playlists"
db_file                 "/tmp/mpd.db"
log_file                "/tmp/mpd.log"
error_file              "/tmp/mpd.error"
zeroconf_enabled        "no"
state_file              "/opt/.mpd/state"
id3v1_encoding          "UTF-8"
filesystem_charset      "UTF-8"

audio_buffer_size "4096"
buffer_before_play "50%"

# OSS Mixer
mixer_type              "oss"

# AUDIO OUTPUT
audio_output {
        type            "oss"
        name            "my OSS sound card"
        device          "/dev/sound/dsp"
        mixer_device    "/dev/sound/mixer"
        mixer_control   "PHONEOUT"
        format          "44100:16:2"
}
Долго не мог победить регулировку громкости. Если ставил mixer_type в "software", то работало, но с задержкой. А найти нужное значение для аппаратного миксера не мог, с стандартным mixer_control="pcm" громкость не регулировалась. Потом попался дельный совет на сайте Томато. Привожу в переводе для тех, кто бьётся с громкостью:

Чтобы посмотреть имена миксеров, сделайте “cat /proc/asound/card0/oss_mixer”. Увидите что-то типа
Код:
SYNTH "" 0
PCM "" 0
SPEAKER "" 0
LINE "" 0
MIC "Mic" 0
PHONEIN "" 0
PHONEOUT "Speaker" 0
VIDEO "" 0
RADIO "" 0
MONITOR "" 0
Перебирайте значения из первого столбца, пока не найдётся нужное.

Ещё оказался неприятно удивлён тем, что MPD не умеет сохранять в state уровень громкости. Пришлось чуть допилить скрипт запуска, чтобы решить эту проблему:
Код:
#!/bin/sh

prefix="/opt"
PATH=${prefix}/bin:${prefix}/sbin:/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
	start)
		echo "Starting Music Player Daemon"
		mpd --create-db /opt/etc/mpd.conf

		#грузим плейлист "по умолчанию", если плейлист mpd пустой
		if [ -z  "$(mpc playlist)" ]
		then
		  mpc load radio
		fi
		#читаем и устанавливаем уровень громкости
		if [ -e "/opt/.mpd/volume" ]
		then
		  mpc volume "$(cat /opt/.mpd/volume)"
		fi
	;;
	stop)
		echo "Stopping Music Player Daemon"
		#тормозим MPD, чтобы роутер не начинал сам играть после перезагрузки
		mpc stop
		#сохраняем уровень громкости
		mpc volume|awk '{print $2}'|cut -d% -f1 > /opt/.mpd/volume
		killall mpd &>/dev/null
	;;
	restart|force-reload)
		"$0" stop
		sleep 1
		"$0" start
	;;
	*)
		echo "Usage: $0 {start|stop|restart|force-reload}" >&2
		exit 1
	;;
esac

exit 0
Возможно получить уровень громкости из вывода mpc можно как-то проще. Я от линукса человек далёкий, сделал как смог. Если кто-то из гуру подскажет, буду благодарен.
У меня пока выставлено PCM. С ним звук регулируется, но с задержкой, как и описывается.

Последний раз редактировалось St@rz; 07.11.2014 в 10:46.
St@rz вне форума   Ответить с цитированием
Старый 07.11.2014, 23:46   #7
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

Мне тоже подошел PHONEOUT:
Код:
audio_output {
        type            "oss"
        name            "My OSS Device"
        device          "/dev/dsp"      # optional
        format          "44100:16:2"    # optional
        mixer_device    "/dev/mixer"    # optional
        mixer_control   "PHONEOUT"      # optional
}
Громкость регулируется без задержек.
St@rz вне форума   Ответить с цитированием
Старый 09.11.2014, 11:32   #8
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

Как правильнее должен выглядеть скрипт:
Проверяем наличие файла в папке /var/lib/mpd.
если - да, то закончили
если - нет, то проверяем пингуем адрес сетевой папки
если - доступен, выполняем команду монтирования диска, перезапускаем mpd и заканчиваем скрипт
если нет, то повторяем пинг

Диск монтируется командой mount -t cifs //192.168.1.5/D /var/lib/mpd -o user=root,iocharset=utf8
mpd перезапускается /etc/init.d/mpd restart

Скрипт нужен для автоматического подключения сетевого ресурса.

И второй вопрос.
Если скрипт поставлю в cron, то как сделать что бы скрипт не запустился второй раз пока первый раз не закончил свою работу?

Последний раз редактировалось St@rz; 09.11.2014 в 11:52.
St@rz вне форума   Ответить с цитированием
Старый 09.11.2014, 12:00   #9
St@rz
Senior Member
 
Регистрация: 30.05.2011
Возраст: 49
Сообщений: 291
Вес репутации: 0
St@rz is on a distinguished road
По умолчанию Re: MPD+MPC+CIFS

В прошивку добавил lighttpd что бы сделать web-интерфейс для управления mpd.
Пример основных команд.
St@rz вне форума   Ответить с цитированием
Старый 09.11.2014, 12:23   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: MPD+MPC+CIFS

Цитата:
Если скрипт поставлю в cron, то как сделать что бы скрипт не запустился второй раз пока первый раз не закончил свою работу?
Нужно проверять в процессах
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:23. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика