Bildschirmtext – da war doch was

Meine Motivation

Schon lange habe ich mich für das Thema Bildschirmtext interessiert. Ich hatte den Onlinedienst allerdings nie richtig kennenlernen können, da ich dafür schlicht zu jung bin. Wie einige wissen, beschäftige ich mich im Rahmen meiner ehrenamtlichen Tätigkeit im Oldenburger Computer-Museum. Beim Stöbern in unserem Depot bin ich vor einigen Wochen auf ein BTX-Terminal gestoßen. Und wenn wir uns nun zurück erinnern an den Chaos Communication Congress 36C3 vom letzten Jahr, wurde dort von einem Open Source Projekt berichtet, dass sich mit der Restaurierung alter BTX-Seiten beschäftigt. Außerdem stellen sie einen Server bereit, über den sich BTX-Terminals anmelden können.

Die Idee war also, das BTX-Terminal aus dem Depot lauffähig zu bekommen, damit wir es in unserem Museum zusammen mit weiteren BTX-Terminals ausstellen können. In diesem Zusammenhang habe ich einen BTX-Server gebaut, der lokal läuft und somit unabhängig von einer PSTN- oder Internetverbindung funktioniert. Wie das genau funktioniert, beschreibe ich in diesem Beitrag

Die Geschichte hinter BTX

Ruf doch mal ab…

Zum Verständnis aber noch ein paar Fakten zu Bildschirmtext: Was war das noch gleich? Nun, um diese Frage zu beantworten, müssen wir zunächst eine kleine Zeitreise machen. Bildschirmtext gehörte seiner Zeit zu den sogenannten Videotex-Diensten. Videotex beschreibt ein elektronisches Informationssystem, bei dem Anwender Informationen in digitaler Form abrufen können. Als Endgeräte wurden hierfür häufig Fernsehgeräte oder Computerterminals verwendet.

Bildschirmtext – oder auch bekannt unter der Kurzform BTX – wurde im September 1983 bundesweit eingeführt. Wir sind also genau in dem Zeitalter, als die ersten Heimcomputer auf den Vormarsch waren. Was war also nun die Idee hinter BTX? Zu der Zeit war das Internet erst noch in der Entstehung und wenig verbreitet. Mit BTX hatte man also erstmals einen interaktiven Onlinedienst für das Wohnzimmer. Dank BTX hatte man Zugriff auf die neusten Informationen und Nachrichten, aber auch Online-Banking oder verschiedenste Einkaufsmöglichkeiten bei Anbietern wie Quelle oder Neckermann waren nun vom Sofa aus möglich. Außerdem war es auch möglich Nachrichten quasi in Echtzeit an andere BTX-Teilnehmer zu übermitteln.

Zum Einsatz kam BTX bei Privatanwendern häufig im Wohnzimmer. Hierzu gab es spezielle Geräte, die sich an den Fernseher und Telefonanschluss anschließen lassen. Mit einer speziellen Fernbedienung konnte man direkt den Onlinedienst nutzen.

Für den professionellen Einsatz gab es spezielle BTX-Terminals, die häufig mit Telefonie-Funktionen kombiniert waren. Aber auch öffentliche BTX-Terminals gab es, die meistens in Banken, Flughäfen oder Bahnhöfen standen. Auch am Commodore 64 konnte man in Kombination mit einem DBT-03 Modem und einer speziellen BTX-Cartridge den Onlinedienst nutzen.

Technischer Aufbau von BTX

Zum Start von BTX in Deutschland gab es bereits in einigen anderen Ländern ähnliche Lösungen. In England wurde beispielsweise Prestel verwendet und in Frankreich gab es einen ähnlichen Ableger unter den Namen Minitel. Das Grundprinzip war bei allen Videotex-Diensten ähnlich. In Deutschland wurde zunächst wie bei Prestel der CEPT-3 Standard verwendet, allerdings wurde wenig später CEPT-1 eingesetzt. Ursprünglich verfolgte die Europäische Gemeinschaft das Ziel, die Standards für elektronische Informationsdienste zu vereinheitlichen. Leider konnte man sich auf internationaler Ebene nie einigen und so gab es hinterher vier unterschiedliche CEPT-Standards:

  • CEPT-1: Entsprach dem deutschen BTX und wurde ab 1990 auch in Spanien durch Telefónica unter dem Namen Ibertex vermarktet
  • CEPT-2: Basis für das französische Télétel (Minitel hießen dort die Terminals)
  • CEPT-3: Standard für das britische Prestel

CEPT-1 wurde aus dem deutschen BTX abgeleitet und beschreibt den Grundaufbau für die Datenverbindung und die Übermittlung der grafischen Seiten in einer Auflösung von 480×240 Bildpunkten. Auch 32 aus 4096 Farben konnten gleichzeitig angezeigt werden. In diesem Aufbau wird allerdings ein monochromes Terminal verwendet, das lediglich mit Graustufen arbeitet.

Die Datenübertragung erfolgt über den V.23 Modem-Standard und erlaubt eine Übertragungsrate von 1.200 bit/s im Download und 75 bit/s im Upload. Die Authentifizierung an der Datenbankzentrale erfolgte über eine zwölfstellige Anschlusskennung, Teilnehmernummer, den Mitbenutzerzusatz und einem persönlichen Passwort.

Die Architektur hinter allen Videotex-Diensten war offenbar eine der Schwachstellen, die auch vermutlich den Misserfolg erklärt. Durch die Uneinigkeit des eingesetzten Standards, erschwerte sich die Möglichkeit einer internationalen Vernetzung. Eine Kopplung war lediglich über zentrale Gateway-Knoten möglich. Im April 1991 gab es für Deutschland unter anderem Kopplungen zu folgenden Ländern:

  • Frankreich
  • Luxemburg
  • Niederlande

Außerdem verfolgte die Architektur einen zentralen Ansatz. In Ulm stand die sogenannte BTX-Leitzentrale. Dieses System war der zentrale Knoten. Für die Entlastung des zentralen Knoten wurden zur Verteilung der Seiten BTX-Vermittlungsstellen eingesetzt. Zunächst wurden Städte in größeren Ballungsgebieten ausgestattet. Geplant war ein Endausbau mit 150 BTX-Vermittlungsstellen. Da es sich hierbei allerdings um einen interaktiven Dienst handelte, mussten geänderte Inhalte stets auf allen Knoten synchronisiert werden. Eine horizontale Skalierung war somit fraglich.

Der geplante Endausbau wurde 1992 gestoppt. Zu diesem Zeitpunkt wurden 37 BTX-Vermittlungsstellen aufgebaut und und zu diesem Zeitpunkt wurden lediglich circa 8000 Zugänge verwendet. Hintergrund war geplante Einführung des neuen Standards Datex-J für das Jahr 1993. Dies war ein spezieller Standard der deutschen Bundespost, wobei J am Ende für “Jedermann” steht. Neben günstigeren Verbindungskosten sollten auch weitere Mehrwerte geschaffen werden, wie beispielsweise eine E-Mail Adresse. Außerdem war eine deutlich schnellere Einwahl mit 2400 bit/s im Down- und Upload möglich. Bei ISDN-Anschlüssen waren sogar 64 000 bit/s möglich. Der Standard konnte sich allerdings ebenfalls nicht durchsetzen und wurde später im Jahr 1995 durch T-Online Classic abgelöst.

Technische Schwachstellen

In der Nachbetrachtung könnte man behaupten, BTX hat den Chaos Computer Club, oder auch CCC, bekannt gemacht. Seiner Zeit wurde das BTX-System von der Bundespost noch als sicher bezeichnet. Jedoch schafften es Mitglieder des CCC im Jahr 1984 mit Hilfe eines Datenüberlaufs an Zugangsdaten zu gelangen, die unter anderem im angezeigten Hauptspeicherinhalt enthalten waren. Mit Hilfe dieser Zugangsdaten konnten sie sich im BTX anmelden und haben ihre eigene CCC BTX-Seite auf Kosten des fremden Eigentümers der Zugangsdaten mehrfach aufgerufen. Durch die kostenpflichtigen Aufrufe entstand so ein Schaden in Höhe von 135.000 DM zugunsten des CCC. Dieser Hack ist heutzutage auch als BTX-Hack bzw. Haspa-Hack bekannt.

Hardware-Aufbau für das Museum

Damit die Einwahl über das integrierte Modem des Terminals funktioniert, wird ein analoger Telefonanschluss benötigt. In Zeiten von VoIP ist sowas ziemlich rar geworden. Für diesen Zweck reicht aber eine handelsübliche Fritz!Box. In diesem Beispiel verwende ich eine AVM Fritz!Box 7270 V3. Aber auch jede andere Fritz!Box, die einen analogen Telefonanschluss anbietet, sollte funktionieren.

Als Gegenstelle für die Einwahl benötigen wir eine anwählbare Telefonnummer auf einem Telefonieserver, das als V.23-Modem antwortet und die Datenverbindung gegen den neu-ulm Server umleitet. Hierfür benutze ich einen Raspberry Pi 1. Richtig gelesen: Der RPi 1 reicht für diesen Zweck völlig aus.

Als BTX-Terminal habe ich, dank freundlicher Leihgabe des Oldenburger Computer-Museum, ein Siemens MultiKom S1 der Deutschen Bundespost verwendet. Das Terminal stammt aus dem Jahr 1990 und besitzt lediglich einen Monochromes Röhrenmonitor.

Einrichtung der Fritz!Box

Technisch gesehen benutze ich die Fritz!Box lediglich als VoIP-Adapter. Dementsprechend richte ich also nur das BTX-Terminal als Telefoniegerät am FON 1 Anschluss ein. Für die Einwahl wird nur noch eine eigene Rufnummer eingerichtet.

Installation des Telefonieservers

Als Betriebssystem für den RPi nutze ich Raspbian. Die Grundinstallation wird hier bereits sehr ausführlich beschrieben. Nach der Installation werden noch folgende Pakete benötigt:

apt install wget build-essential subversion git python3 python3-pip libopenjp2-7 socat libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite-dev libspandsp-dev libspandsp2

Nun brauchen wir für den Telefonserver noch den Asterisk-Sourcecode, da später noch das passende Softmodem benötigt wird, das üblicherweise bei Asterisk nicht enthalten ist.

cd /usr/local/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar xvzf asterisk-13-current.tar.gz

Den Sourcecode für das Softmodem in das passende Verzeichnis für den Asterisk-Build herunterladen:

cd asterisk-13.35.0/apps/
wget https://raw.githubusercontent.com/proquar/asterisk-Softmodem/app_softmodem/app_softmodem.c
cd ..

Im nächsten Schritt kann Asterisk compiliert werden. Auf dem RPi 1 dauert der Build-Job die ganze Nacht. Spätestens beim ‘make’ ist Zeit für einen Kaffee. Für den Build muss allerdings noch das erwähnte Softmodem ausgewählt werden.

make menuselect

Applications -> app_softmodem aktivieren und dann den Build anstoßen und hinterher auf dem System installieren:

make
make install

Konfiguration des Telefonieserver

Damit der Asterisk sich auch wie ein deutscher Telefonanschluss anhört, müssen die Ton-Indikationen in /etc/asterisk/indications.conf wie folgt angepasst werden:

[general]
country = de

[de]
description = Germany
ringcadence = 1000,4000
dial = 425
busy = 425/480,0/480
ring = 425/1000,0/4000
congestion = 425/480,0/480
callwaiting = 425/2000,0/6000
dialrecall = 425/500,0/500,425/500,0/500,425/500,0/500,1600/100,0/90
record = 1400/500,0/15000
info = 950/330,0/200,1400/330,0/200,1800/330,0/1000

Für die Fritz!Box wird der SIP-User in /etc/asterisk/sip.conf angelegt. Wichtig ist hier unter anderem ‘alaw’ für den europäischen G.711 Codec.

[general]
transport=udp

[friends_internal](!)
type=friend
host=dynamic
context=Bildschirmtext
disallow=all
allow=alaw

[sip-fon1](friends_internal)
secret=changeme ; put a strong, unique password here instead

Die Telefonnummer für die Anwahl des Terminals wird in /etc/asterisk/extensions.conf definiert. Dort sollte die ‘190’ verwendet werden, da in einigen BTX-Modems diese Nummer hartkodiert ist und sich somit nicht ändern lässt. Bei der ‘190’ wird das Antwortverhalten wie folgt beschrieben:

[Bildschirmtext]
exten => 190,1,Answer()
        same => n,Wait(1)
        same => n,Softmodem(127.0.0.1, 8289, v(V23)ld(8)s(1)n)
        same => n,Hangup()

Zur Erklärung: Nach der Annahme (Answer()) und einem kurzen Warten (Wait(1)) wird das Gespräch an das vorab kompilierte V.23-Softmodem übergeben. Damit die Übergabe an das Softmodem sich wie eine BTX-Zentrale verhält, wird V.23 mit 8 Data-Bits und 1 Stop-Bit verwendet. Nach dem Verbindungsaufbau wird mit der Option “n” ein NULL-Byte nach der Modem Carrier Detection (BTX spezifisch) gesendet. Und zu guter Letzt erfolgt am Ende ein Auflegen (Hangup()).

Installation von neu-ulm

Die eigentliche Bereitstellung der BTX-Seiten erfolgt über neu-ulm. Hierzu müssen noch folgende Python-Pakete installiert werden:

pip3 install beautifulsoup4
pip3 install Pillow
pip3 install feedparser

Anschließend kann neu-ulm über git geklont werden:

cd /usr/local/src/
git clone https://github.com/bildschirmtext/bildschirmtext.git

Anbindung von neu-ulm

Damit neu-ulm mit Hilfe des Softmodems über Localhost erreicht werden kann, wird ‘socat’ benutzt. Damit ‘socat’ beim Boot gestartet wird, sind folgende Zeilen in der /etc/rc.local vor dem letzten exit hinzufügt worden:

cd /usr/local/src/bildschirmtext/server/
/usr/bin/socat TCP-LISTEN:8289,reuseaddr,fork 'exec:/usr/bin/python3 /usr/local/src/bildschirmtext/server/neu-ulm.py' &

Zum Testen kann der Befehl für ‘socat’ auch ohne ‘&’ am Ende direkt in der Bash aufgerufen werden.

Troubleshooting

Falls es Probleme gibt, kann der Asterisk wie folgt in den DEBUG-Modus versetzt werden:

rasterisk

*CLI> core set verbose 5
*CLI> core set debug 5
*CLI> module reload logger

Eine Einwahl sieht auf dem Asterisk dann wie folgt aus:

== Using SIP RTP CoS mark 5
    > 0x122b9f0 -- Strict RTP learning after remote address set to: 192.168.188.1:7078
-- Executing [190@Bildschirmtext:1] Answer("SIP/sip-fon1-00000002", "") in new stack
   > 0x122b9f0 -- Strict RTP switching to RTP target address 192.168.188.1:7078 as source
-- Executing [190@Bildschirmtext:2] Wait("SIP/sip-fon1-00000002", "1") in new stack
-- Executing [190@Bildschirmtext:3] Softmodem("SIP/sip-fon1-00000002", "127.0.0.1, 8289, v(V23)ld(8)s(1)n") in new stack
   > 0x122b9f0 -- Strict RTP learning complete - Locking on source address 192.168.188.1:7078

Und so sieht die Ausgabe von neu-ulm.py während des Verbindungsaufbau aus:

root@raspberrypi:/usr/local/src/bildschirmtext/server# /usr/bin/socat TCP-LISTEN:8289,reuseaddr,fork 'exec:/usr/bin/python3 /usr/local/src/bildschirmtext/server/neu-ulm.py'
Neu-Ulm running.
showing page: '00000a'
compressed 497 down to 323
Sending pal/char: .OK
Sending text: .....................................OK
history: ['00000a']
links: {}

Bilder

Zur Demonstration sind hier einige Bilder vom fertigen Aufbau. Zunächst wird das Datenbankziel ausgewählt und eine CEPT-Verbindung aufgebaut. Anschließend können diverse restaurierte BTX-Seiten angezeigt werden. Normalerweise werden diese Seiten auch in Farbe dargestellt. Allerdings kann das Siemens MultiKom S1 nur eine monochrome Darstellung.

Quellen und Danksagung

6 Gedanken zu „Bildschirmtext – da war doch was

  1. Guter Bericht. Habe uch den Live-Stream verfolgt. Dort wurde viel aus den ersten Jahren des BTX Dienstes gezeigt. Allerdings blieben einige Fragen offen. Ich war selbst Anwender von 1986 bis 2007. Die letzten Jahre ging ja nur noch Homebanking. In den Kommentaren im Stream hatte ich bereits einiges beantwortet. Das sollte vielleicht nochmal ergänzt werden. Stehe auch für ein Gespräch mit weiteren Informationen gerne zur Verfügung.

    1. Hallo Boris. Vielen Dank für dein Feedback. Ich habe noch nicht alle Kommentare gelesen, habe deine aber nun gesehen. Der Vortrag endet im Grunde mit der Einführung von Datex-J, weil das Grund-Konzept von BTX dadurch im Grunde abgelöst wurde. Homebanking hatte ich erwähnt, ist aber vielleicht nicht klar angekommen. Da hast du vollkommen recht. Homebanking in BTX war sogar sehr beliebt, weil es als relativ sicher galt.

      Inhaltlich sei uns aber bitte verziehen. Das war im Grunde unser Debüt zum Thema BTX. Wir bauen nun erst unsere Sonderausstellung dazu aus. Es wird sicherlich noch mehr zum dem Thema berichtet werden. Und sobald wir wieder öffnen dürfen, ist natürlich auch ein Handson möglich. 🙂

  2. Ich bin gerade dabei einen Raspi entsprechend der Anleitung zurechtzufrickeln. Nach heutigem Stand fehlen da ein paar abhängigkeiten für den Asterisk.
    Man braucht noch folgendende Module:
    apt-get install libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite-dev

    Zusatzlich braucht man für das Softmodem noch die “spandsp” Librarys die nicht mehr mit Asterisk mitkommen und Anleitungen die ich dazu gefunden habe führen auf URLs die derzeit nicht erreichbar sind.

    http://www.soft-switch.org/downloads/spandsp/snapshots/

  3. Nachtrag2
    Bitte den nachtrag1 wegschmeissen
    libspand einfach mitinstallieren also dann:

    apt-get install libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite-dev libspandsp-dev libspandsp2

  4. Hallo und vielen Dank für die Anleitung.

    Leider bekomme ich Fehlermeldungen beim Kompilieren des Softmodems und nach der Installation habe ich nur ein leeres Verzeichnis /etc/asterisk , ist dies so richtig?

    Auch die Fritzbox kann keine Verbindung zu Asterisk herstellen.

    Muss ich evtl. noch weitere Einstellungen vornehmen, die in Ihrer Anleitung nicht vermerkt sind?

    Vielen Dank im Voraus
    Rene

    1. Hallo Rene, bitte entschuldige die späte Antwort. Das Verzeichnis in etc wird normalerweise ist nach einem make install erzeugt. Generell muss hier ein normaler Asterisk lediglich kompiliert werden. Einzig das Softmodem ist speziell. Falls es beim Kompilieren ein Problem gibt, bitte nach dem spezifischen Problem googlen. Da kann ich leider nicht so einfach weiterhelfen.

Schreibe einen Kommentar zu Michael Becker Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert