Computer piepst nicht

(DE) System, Installation, Konfiguration, Hardware, Treiber, Netzwerk, Virtualisierung, etc.
(EN) System, Installation, Configuration, Hardware, Drivers, Network, Virtualisation, etc.
Antworten
Martin Vieregg
Beiträge: 459
Registriert: Di 19. Aug 2014, 09:30

Computer piepst nicht

Beitrag von Martin Vieregg »

Ich habe es nie geschafft, einen Ton aus dem Beep-Lautsprecher, der beim Motherboard bei "Speaker" angeschlossen ist, piepsen zu lassen und meinte, der Ton würde auf die Soundkarte umgeleitet. Doch aus den großen Lautsprechern kommt auch nichts. Systemsounds sind aktiviert und hörbar, Musik usw. sowieso. Unter Windows funktioniert es. Ich will vor allem zum Programmieren zur Kontrolle bei der Fehlersuche Beeps erzeugen können. Mein kleines Allroundprogramm DO erzeugt solche Beeps:

DO SOUND 200

ich höre aber nichts.

DO Kommandozeilenprogramm Archiv
ThomasFrey
Beiträge: 223
Registriert: Fr 2. Apr 2021, 17:29

Beitrag von ThomasFrey »

Hallo Martin

Bei mir piept der interne Lautsprecher. Bei meinem Lenovo ThinkCentre leite ich die Systemtöne und sonstiger Sound mit \MMOS2\ASwitch.exe auf die Soundkarte um, aber Dein DO-Piep wird nicht umgelaitet. Wahrscheinlich ist Dein PC-Lautsprecher kaputt, resp. die Elektronik. Das ist mir mal passiert, als ich bei einem alten PC den internen gegen einen anderen LS getauscht habe, der aussen lauter piepsen sollte. Nach einiger Zeit war er verstummt.
Benutzeravatar
Frank Wochatz
Beiträge: 1112
Registriert: So 22. Dez 2013, 22:04
Wohnort: Berlin
Kontaktdaten:

Beitrag von Frank Wochatz »

Also da es unter Win funktioniert, kann ja die Hardware eigentlich nicht kaputt sein.
Was mir aufgefallen ist, in einer VM funktioniert der Speaker nicht. Nutzt Du OS2 in einer VM oder direkt auf der Hardware? Es gibt in Virtualbox irgendwo Hinweise auf ein Speaker-Pasthrough, aber hier mit OS2 als Gast funktioniert das nicht, Jedenfalls nicht mit einer Standardinstallation von VBox und OS/2.
ThomasFrey
Beiträge: 223
Registriert: Fr 2. Apr 2021, 17:29

Beitrag von ThomasFrey »

Mir war nicht ganz klar, was unter Windows funktionieren soll. Das DO.exe hat Martin ja für OS/2 geschrieben und unter Windows habe ich noch nie den internen Lautsprecher gehört, wenn eine Soundkarte installiert war. Dieser war noch früher unter DOS hörbar, aber diese Zeiten sind lange vorbei.
Benutzeravatar
ak120
Beiträge: 1050
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

Frank Wochatz hat geschrieben: Fr 2. Feb 2024, 09:48 Also da es unter Win funktioniert, kann ja die Hardware eigentlich nicht kaputt sein.
Was mir aufgefallen ist, in einer VM funktioniert der Speaker nicht. Nutzt Du OS2 in einer VM oder direkt auf der Hardware? Es gibt in Virtualbox irgendwo Hinweise auf ein Speaker-Pasthrough, aber hier mit OS2 als Gast funktioniert das nicht, Jedenfalls nicht mit einer Standardinstallation von VBox und OS/2.
Dieses "PC Speaker Passthrough" ist bei VirtualBox noch eine experimentelle Funktion nur für Linux-Wirtssysteme. Bei anderen Lösungen wie VMware oder Virtual PC funktioniert es jedoch problemlos - auch mit OS/2-Gastsystemen.

Siehe auch: https://docs.oracle.com/en/virtualizati ... assthrough
Benutzeravatar
ak120
Beiträge: 1050
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

Martin Vieregg hat geschrieben: Do 1. Feb 2024, 19:52 Ich habe es nie geschafft, einen Ton aus dem Beep-Lautsprecher, der beim Motherboard bei "Speaker" angeschlossen ist, piepsen zu lassen und meinte, der Ton würde auf die Soundkarte umgeleitet. Doch aus den großen Lautsprechern kommt auch nichts. Systemsounds sind aktiviert und hörbar, Musik usw. sowieso. Unter Windows funktioniert es. Ich will vor allem zum Programmieren zur Kontrolle bei der Fehlersuche Beeps erzeugen können. Mein kleines Allroundprogramm DO erzeugt solche Beeps:

DO SOUND 200

ich höre aber nichts.

DO Kommandozeilenprogramm Archiv
Funktioniert ein simples

Code: Alles auswählen

ECHO ^G
auf der DOS- bzw. OS/2-Befehlszeile auch nicht?
ThomasFrey
Beiträge: 223
Registriert: Fr 2. Apr 2021, 17:29

Beitrag von ThomasFrey »

Nein, da wird G angezeigt, also wie bei ECHO G
erdmann
Beiträge: 595
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

Hast du eine Soundkarte/on-board Sound ? Dann umgeht:

https://hobbes.nmsu.edu/download/pub/os ... le_2-0.zip

das Problem indem es die "DosBeep" API (16-bit als auch 32-bit) durch Funktionalität ersetzt die statt eines Tones aus dem Lautsprecher einen Sinuston der gewünschten Frequenz und Länge erzeugt und das Signal auf die Soundkarte schickt (mittels MMPM). Hab ich mal geschrieben weil jemand nämlich genau das Problem hatte: ein Programm, welches "DosBeep" benutzt aber keinen Computer mehr, der überhaupt nur einen Lautsprecher hätte (so wie auch meiner).

Es ist ein readme dabei, wie das Programm geändert werden muss (in diesem Falle, das DO/SOUND Executable).

Low level mäßig ist Folgendes zu erklären: das "Gefiepe" aus dem Lautsprecher wird dadurch erzeugt, dass ein Kanal des Intel 8254 Zählerbausteins dazu hergenommen wird ein Rechtecksignal zu erzeugen (und genau diese Funktionalität benutzt die original Implementierung von DosBeep). Das wird dann noch über ein Gate geleitet (was dann natürlich noch geschlossen werden muss) und landet dann direkt auf dem Lautsprecher (wobei der arme Lautsprecher dann als Tiefpassfilter fungieren muss um aus dem Rechtecksignal noch ein einigermassen passables Sinussignal zu machen ...).
Das Ganze wird über einige I/O ports programmiert. Wenn das also unter Windows tatsächlich noch funktioniert, dann ist unter OS/2 womöglich das Gate nicht durchgeschaltet oder Windows benutzt ein gänzlich anderes Device um den Ton zu erzeugen.
Zuletzt geändert von erdmann am Di 6. Feb 2024, 08:31, insgesamt 1-mal geändert.
Benutzeravatar
ak120
Beiträge: 1050
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

ThomasFrey hat geschrieben: Di 6. Feb 2024, 01:48 Nein, da wird G angezeigt, also wie bei ECHO G
Vielleicht hätte ich für die Allgemeinheit dazuschreiben sollen, daß ^G verkürzt die durch die Tastenkombination Strg+G erzeugte Steuerungskodierung (BELL) darstellt.

Eine Frage an die Spezialisten: Welcher der so erzeugten Töne aus CMD.EXE oder COMMAND.COM ist höher?
erdmann
Beiträge: 595
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

Ein "echo ^G" auf der CMD.EXE Kommandozeile ruft offensichtlich kein "DosBeep" auf. Keine Ahnung ob da überhaupt etwas passiert.
Benutzeravatar
ak120
Beiträge: 1050
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

erdmann hat geschrieben: Mo 12. Feb 2024, 19:20 Ein "echo ^G" auf der CMD.EXE Kommandozeile ruft offensichtlich kein "DosBeep" auf. Keine Ahnung ob da überhaupt etwas passiert.
Bei der ursprünglichen Frage ging es doch um die Funktion des eingebauten Lautsprechers. Dann scheint es zumindest eine alternative Methode im Protected Mode zu geben, welche unter allen OS/2-Versionen inkl. NT funktioniert.
erdmann
Beiträge: 595
Registriert: Mo 4. Jan 2016, 14:36

Beitrag von erdmann »

Mir ist schon klar um was es ging. Allerdings hätte ich erwartet, dass CMD.EXE einfach "DosBeep" benutzt um den Lautsprecherton zu erzeugen (das wäre das Einfachste und Naheliegendste).

Jetzt wo ich CMD.EXE aber "instrumentiert" habe, stelle ich fest, dass es "DosBeep" nicht aufruft, wenn man "echo ^G" auf der Kommandozeile eingibt.
Dann muss CMD.EXE also direkt die Ports programmieren. Das würde aber bedeuten, dass es ein IOPL Segment haben muss oder "DosPortAccess" und dergleichen nutzt, weil außer "DOSCALLS" von CMD.EXE keine weiteren DLLs angezogen werden.

Hörst du denn was, wenn du "echo ^G" auf der Kommandozeile eingibst ? Ich kann das nicht testen, weil ich gar keinen eingebauten Lautsprecher mehr habe.
Benutzeravatar
ak120
Beiträge: 1050
Registriert: Do 8. Mai 2014, 12:50
Wohnort: Demmin
Kontaktdaten:

Beitrag von ak120 »

erdmann hat geschrieben: Di 13. Feb 2024, 10:20 Mir ist schon klar um was es ging. Allerdings hätte ich erwartet, dass CMD.EXE einfach "DosBeep" benutzt um den Lautsprecherton zu erzeugen (das wäre das Einfachste und Naheliegendste).

Jetzt wo ich CMD.EXE aber "instrumentiert" habe, stelle ich fest, dass es "DosBeep" nicht aufruft, wenn man "echo ^G" auf der Kommandozeile eingibt.
Dann muss CMD.EXE also direkt die Ports programmieren. Das würde aber bedeuten, dass es ein IOPL Segment haben muss oder "DosPortAccess" und dergleichen nutzt, weil außer "DOSCALLS" von CMD.EXE keine weiteren DLLs angezogen werden.

Hörst du denn was, wenn du "echo ^G" auf der Kommandozeile eingibst ? Ich kann das nicht testen, weil ich gar keinen eingebauten Lautsprecher mehr habe.
Herausfinden wird man es wohl fast nur mit dem Kernel Debugger. Ich hätte vermutet, daß es über DosDevIOCtl gemacht wird. Sicher kann ich den Piepton hören, sowohl unter CMD als auch in der COMMAND.COM. Mir fiel nur auf, daß der Ton nach meinem Höreindruck unter DOS etwas höher ist. Mir ging es letztlich nur darum, fehlerhafte Bibliotheken oder ähnliche Einflüsse als Ursache auszuschließen.
Antworten