Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
PC-speaker в Linux, или как сделать beep из консоли встроенным динамиком ПК



Еще со времен DOS можно было свистеть, гудеть и пикать встроенным динамиком компьютера, и даже симфонии играть. Сейчас это особо не нужно, ибо везде звуковые карты, динамики и прочая мультимедия. Но иногда PC-speaker нужная и полезная вещь, способная сигнализировать о чем либо, например, о разрыве соединения с Интернетом на домашнем сервере, к которому не подключен монитор, или о том, что торрент докачался. Да и вообще, способов, как можно применить спикер - множество. Даже симфонии можно играть.

Включение динамика


Зачастую, PC-speaker в линуксе отключен, точнее, не загружен модуль ядра, который им управляет. Обычно это модуль pcspkr, хотя, в некоторых источниках написано, что может быть и другой модуль snd-pcsp. У меня оказался первый.
Проверить, загружен ли соответствующий модуль ядра можно командами
lsmod |grep pcspkr и lsmod |grep snd-pcsp соответственно.
Если команда ничего не выдала, то модуль не загружен.
Если выдала что-то похожее, значит, модуль загружен:

>lsmod |grep pcspkr
pcspkr                  1448  0


Если модуль не загружен, нужно попробовать его загрузить:

modprobe pcspkr
или
modprobe snd-pcsp

Если команда не выдала ошибки, модуль загружен. Можно проверить с помощью команды lsmod. Если случилась ошибка, то печально. Модуль, скорее всего, придется собирать. Ну, или не так печально, а даже наоборот - модуль встроен в ядро, и PC-speaker по умолчанию включен. Попробуйте простой beep.

Простой beep


Для простого beep достаточно отправить на консоль символ с кодом 007, ASCII-символ BEL

echo -ne '\007'

Способ может не сработать из SSH-терминала, либо из терминала X. Терминал SSH "булькнет" не на удаленном компьютере, а на локальном, а X-server может перенаправить beep на колонки, вместо PC-speaker'a

Утилита beep


Простые звуки и даже целые мелодии можно играть на спикере утилитой beep.
На рабочей машине она уже была в комплекте ОС, на Ubuntu ее можно установить командой apt-get install beep, а в Slackware она ставится через Sbopkg
Проект имеется на Github, можно собрать и из исходников

Примеры вызова:

beep

Без параметров издаст стандартный beep

beep -f 500 -l 1000

Выдаст звук частотой 500 Гц, продолжительностью 1 секунду (1000 миллисекунд)

Пример скрипта, играющего тему Die Gedanken Sind Frei из ролика в начале заметки.

Ссылки


Больше мелодий и ссылок на готовые скрипты Копия
How do I make my pc speaker beep. Еще больше про то, как можно пискнуть спикером.

Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2018/01/14/pc-speaker-v-linux-ili-kak-sdelat-beep-iz-konsoli-vstroennym-dinamikom-pk/

Tags: ,
Comments
(Anonymous)

пиздец у тебя достижения, я в древние времена на 386 за полчаса написал cd-плеер, который хуярил музыку через спикер (в качестве документации используя .h-файлы), но даже тогда мне в голову не пришло бы в интернете этим хвастаться (если бы он тогда был даже)

Причем тут достижения, хвастовство и "мои"? Я скорее просто записываю то, что не знал и узнал, и этим где-то пришлось воспользоваться. На случай мало ли понадобится мне же самому, или еще кому-нибудь. Пока нет очередного Семенова, приходится писать про что-то околоайтишное. Тем более, что админ Леша только за, и сам пользуется нашими линуксоидными заметками.
Плюс, когда мне понадобился этот самый писи-скрипер, про него на русском вообще ничего не нагуглилось толкового. Значит, как не крути, а контент уникальный.

Внесите очередного едроса, будем писать про него. Только едрос должен быть:
1. Не раскрученный (т.е. чаек и айфончиков нам не надо, про них все уже знают)
2. Вонючий и пакостный, хоть бы и местного/регионального уровня.
3. Интересный, дергающийся, у которого будет бомбмть.