LINUX.ORG.RU

Не работает спикер


1

1

Здрасте.
Для выполнения лабы по ассемблеру нужен вышеупомянутый спикер. Он есть, при загрузке биос им пикает, но вот

echo -ne '\a'
и
int main ()                                                
{                                                          
 printf("\a");                                             
}
и даже
irb(main):002:0> print "\a"                                 
=> nil

Не могут заставить спикер что-либо спикнуть.
GNOME Alsamuxer настроен вот так.

Так вот, как заставить его работать?

//Debian sid, alsa

★★★★★
Ответ на: комментарий от Debasher

Если он где-то представлен как символьное устройство, то наверно можно попробовать что-то записать туда напрямую, но это только предположение, мне проверять не на чем.

Homura_Akemi
()
Ответ на: комментарий от false

Не, в нём вообще нету упоминания о спикере.

Debasher ★★★★★
() автор топика
Ответ на: комментарий от hexdump01010101

если

тоже самое :'(

Ну и последний вариант, выключить иксы и в чистой консоли сделать beep?

Тишина.

Debasher ★★★★★
() автор топика
Ответ на: комментарий от hexdump01010101
root@deb:~# for i in `seq 0 10`; do amixer -c $i contents 2> /dev/null ; done | grep -i "\(beep\|spea\)" -A 2
numid=17,iface=CARD,name='Speaker Phantom Jack'
  ; type=BOOLEAN,access=r-------,values=1
  : values=on
--
numid=4,iface=MIXER,name='Speaker Playback Switch'
  ; type=BOOLEAN,access=rw------,values=2
  : values=on,on
numid=3,iface=MIXER,name='Speaker Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=64,step=0
  : values=64,64

Debasher ★★★★★
() автор топика
Ответ на: комментарий от Debasher

Тогда у меня подозрения на счет ядра. Какая версия ядра, и какая точно железка (alc269 я в скриншоте посмотрел)?

Гугл подсказал, может быть для железки нужно что-то вроде такого?

http://lkml.indiana.edu/hypermail/linux/kernel/1105.2/02101.html

lspci
uname -a

?

hexdump01010101
()
Ответ на: комментарий от hexdump01010101
debasher@deb:~$ uname -a
Linux deb 3.6-trunk-686-pae #1 SMP Debian 3.6.4-1~experimental.1 i686 GNU/Linux
debasher@deb:~$ lspci 
00:00.0 Host bridge: Intel Corporation Mobile 945GSE Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GSE Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)
00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02)
00:1d.0 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)
00:1d.3 USB controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)
00:1d.7 USB controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (rev 02)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 02)
02:00.0 Network controller: Atheros Communications Inc. AR9285 Wireless Network Adapter (PCI-Express) (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)

может быть для железки нужно что-то вроде такого?

Но ведь оно пикает даже когда никакая ос не загружена...

Debasher ★★★★★
() автор топика
Ответ на: комментарий от Debasher

Но ведь оно пикает даже когда никакая ос не загружена...

Ну так правильно, я подозреваю проблему-то в ядре. Оно не понимает как правильно работать с железкой.

Попробовать такое вот изменение в ядре, и перекомпилировать...

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -4261,6 +4261,7 @@ static const struct snd_pci_quirk beep_white_list[] = {
        SND_PCI_QUIRK(0x1043, 0x834a, "EeePC", 1),
        SND_PCI_QUIRK(0x1458, 0xa002, "GA-MA790X", 1),
        SND_PCI_QUIRK(0x8086, 0xd613, "Intel", 1),
+       SND_PCI_QUIRK(0x8086, 0x27d8, "Intel", 1),
        {}
 };

То есть добавить в список beep_white_list. Ну и убедиться, что CONFIG_SND_HDA_INPUT_BEEP=y.

И на всякий случай, покажи еще lspci -n, а то на счет 0x27d8 я не уверен.

hexdump01010101
()
Ответ на: комментарий от hexdump01010101

Попробовать такое вот изменение в ядре, и перекомпилировать...

О нет!

00:00.0 0600: 8086:27ac (rev 03)
00:02.0 0300: 8086:27ae (rev 03)
00:02.1 0380: 8086:27a6 (rev 03)
00:1b.0 0403: 8086:27d8 (rev 02)
00:1c.0 0604: 8086:27d0 (rev 02)
00:1c.2 0604: 8086:27d4 (rev 02)
00:1d.0 0c03: 8086:27c8 (rev 02)
00:1d.1 0c03: 8086:27c9 (rev 02)
00:1d.2 0c03: 8086:27ca (rev 02)
00:1d.3 0c03: 8086:27cb (rev 02)
00:1d.7 0c03: 8086:27cc (rev 02)
00:1e.0 0604: 8086:2448 (rev e2)
00:1f.0 0601: 8086:27b9 (rev 02)
00:1f.2 0101: 8086:27c4 (rev 02)
00:1f.3 0c05: 8086:27da (rev 02)
02:00.0 0280: 168c:002b (rev 01)
03:00.0 0200: 10ec:8136 (rev 02)
Debasher ★★★★★
() автор топика
Ответ на: комментарий от Debasher

Да, таки ошибся. Строчку в beep_white_list надо добавить такую:

SND_PCI_QUIRK(0x144d, 0xc05d, "Samsung", 1),

Не факт, что поможет, конечно... но ничего другого я предложить не могу.

Ну есть еще вариант попробовать ядро на 2-3 версии старее текущего, может в новых еще что-то сломали.

hexdump01010101
()
Ответ на: комментарий от hexdump01010101

А, спасибо, щас буду шаманить :)

Debasher ★★★★★
() автор топика

Для выполнения лабы по ассемблеру нужен вышеупомянутый спикер.

Как планируете обращаться к нему из asm?

AITap ★★★★★
()
Ответ на: комментарий от Debasher

Есть опасения, что лаба по ASM будет включать программирование для реального режима, что потребует DosBox/QEMU и автоматически сделает ненужным ковыряние ALSA.

AITap ★★★★★
()
Ответ на: комментарий от AITap

Ну, задание таково:

Разработать и отладить программу генерации звукового сигнала. Генерация должна прекращаться с нажатием любой клавиши. 
...Модернизировать программу, обеспечивая изменение тона сигнала при каждом нажатии клавиши. Определить с помощью модернизированной программы значения коэффициента пересчета таймера, при которых обеспечивается высший и низший тон услышанного звукового сигнала.
Debasher ★★★★★
() автор топика
Ответ на: комментарий от Debasher

Если заглянуть в исходники утилиты beep, можно увидеть, что она (в завивимости от условий) либо делает особый ioctl, либо записывает в консоль stuct input_event. Оба способа являются специфичными для Linux и наверняка не подходят авторам задания. Им наверняка требуется прямая работа с оборудованием (http://en.wikipedia.org/wiki/PC_speaker, http://en.wikipedia.org/wiki/Intel_8253 и т.п.)

AITap ★★★★★
()

по ходу, программа должна работать на голом железе,а не из линукса

Harald ★★★★★
()
Ответ на: комментарий от AITap

Хм, как-то не подумал. Спасибо за ответ, щас буду раскуривать.

Debasher ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.