Archived 2013-12-08
This page has been archived and some links may not work correctly anymore. No updates of this page will be done anymore.

Contents of this page:


Introduction:

WWW/LX is a software package made by and downloadable from D&A Software which allows Internet access with the DOS-based Hewlett Packard palmtops 100LX, 200LX, 1000CX and Omnigo 700LX.
You can download WWW/LX (for free) at ftp://ftp.dasoft.com/pub/WWW. The file is named "www3.zip".

It contains a TCP/IP stack with built-in IrDA and Ethernet support (in addition to the usual PPP and SLIP protocols which are needed for modem connections or direct serial connections to other computers) and the package contains several clients for almost every kind of purpose. An email client, a news reader client, ftp, telnet, finger and HV, a limited but useful WWW browser and get, which lets you get web pages automatically. Another very useful addition has been developed by Tony Hutchins using ROBOT/LX, an Internet robot program: ROBOWEB/LX. It combines get and ROBOT/LX so that you can get Internet pages or even whole sites onto your palmtop for offline reading. See this link for details.

It is relatively easy to set up WWW/LX and Post/LX for basic purposes. However, there are so many amazing sophisticated possibilities, which are not covered by the setup programs which come with WWW/LX and must be created manually.

Here are examples which should give you some ideas of what is really possible with WWW/LX. I have never seen another Internet software package which is so powerful and rich of features as WWW/LX. And in addition it is extremely user-customizable. See below. I won´t give you details here of how basic setups work, because you can read that in the WWW/LX documentation. Here I assume that you are familiar with the basics already.

Basics of my setup:

I use almost every possible kind of Internet connection, so you will find examples here which are useful, regardless which kind of connection you want to use:

  • Modem connection over the serial port with several ISPs
  • Modem connection via PCMCIA modem with several ISPs
  • Mobile connection via IrDA-enabled GSM mobile phone
  • Ethernet connection via PCMCIA Ethernet card
  • direct serial connection to a PC which is connected to the Internet (internet connection sharing)
  • IrDA connection to another PC which is connected to the Internet (internet connection sharing)

Take this as a "snapshot" of my current WWW/LX configuration and have fun with it!

My main application, which acts as the "central", is Post/LX. WWW/LX is loaded resident and activated everytime I press F5 in Post/LX to establish a connection. If you don´t use email that much, but more often use ftp or HV, it may be better for you to start www.exe manually giving the setup to use as a parameter. It will then connect instantly and return to the DOS prompt, so you can do whatever you want once the connection is established. If that is the way you want to use WWW/LX, most parts of my setup are not useful for you. I use Post/LX as the central application of my setup.

In general, my www.cfg only contains five basic setups, independent from the ISP to use. So my www.cfg is kept small and thus doesn´t need so much memory. www.cfg is always loaded entirely into RAM, so it really makes a difference if you have for example 10 setups (one for each modem / ISP combination using two modems and 5 ISPs) or only two setups for the two modems and do the ISP choice externally using the little utility wwwset.

You could even work with just ONE "general" www setup and modify all relevant parameters externally. However, I have not choosen that way because I want still to be able to use www.exe as a stand-alone program without having to use the external wwwset utility.

My WWW/LX setup:

My five basic www.cfg setups are [Modem1], [Modem2], [IrDA], [Ether] and [PPPD].
I also have TERM-IR and TERM-K, which are explained below.

  • Modem1 is for an external modem on COM1
  • Modem2 is for a connection via PCMCIA modem (COM2)
  • IrDA is for mobile phone connections over IrDA, for either Internet or SMS
  • Ether is for a connection to my home PC via Ethernet card
  • PPPD is for serial or IrDA connection to my home PC or laptop running Linux and the pppd (PPP deamon) and internet connection sharing (=IP forwarding and IP masquerading)

  • TERM-K and TERM-IR is for a dumb terminal which enables you to send AT commands to a modem or mobile phone (IrDA) and connect manually (for debugging purposes). It requires you to have telnet.exe (also available on the dasoft ftp server) and you have to call it from the DOS prompt that way: www.exe -d TERM-[IR|K] "!telnet local"
    IR stands for IrDA, K for Cable.

My Post/LX setup:

Post/LX is set up in a way that I only need to press F5, then it launches a batch file "setcom.bat" via the post.cfg parameter "PreOnline". setcom.bat determines the connected hardware and decides, which www setup to use. If it finds out that I want to connect via modem, it lets me choose an ISP. Otherwise it changes the active www setup instantly to the appropriate one from the five setups mentioned above. In addition I let setcom ask me (only for the setups where it is useful), if I want to let WWW/LX disconnect after the online run of Post/LX, i.e. directly after mail sending / receiving. If I want to surf the web with HV after transmitting mail for example, I choose to keep the connection. In other cases, for example when I will have an expensive connection via mobile phone, and I´m sure I don´t want to do anything else than sending the email I just wrote, I can choose "yes, disconnect!" and the connection is terminated as fast as possible automatically after the Post/LX online run. This is done via the post.cfg "PostOnline" parameter which invokes a batch file after every online run.

I also use Post/LX for SMS sending and receiving via IrDA and my mobile phone. For this purpose, I have created a keyboard macro in post.cfg, which lets me send and receive all SMS just by placing the mobile phone near the palmtop´s IR port and fressing F8 in Post/LX. Note that if you are used to use F8 for pther purposes (for example for marking messages during you read them), you should NOT use that macro. I do never use F8 with the functionality Post/LX gives to it, and in the main screen of Post/LX F8 doesn´t have any functionality anyway. So I could choose F8 as my SMS macro activating key.

For more info on how to setup PDU for SMS processing please download PDU from Stefan Peichl´s homepage and read the documentation.

Here are some screenshots of my Post/LX main screen:

The main screen with some folders and mailboxes (SMS box on top so that the F8 macro works, see post.cfg below!):

Here I pressed Shift-F5: Only the one "Default" WWW/LX setup is shown. No need anymore to choose anything here!

This shows some of my "Externals" entries (Menu-X-X). Hotkey "S" chooses "SMS" (so that the F8 SMS macro works, see post.cfg below!)

My cfg config files:

Okay, enough words, I will now show you my cfg and batch files and add comments everywhere I think it´ necessary. Again: Please read the WWW/LX documentation carefully in order to understand everything. I won´t answer questions covered there.

Click here to see my www.cfg file (don´t use the file as is, because it contains html tags! Load it into your browser by clicking on the link and then mark, copy and paste! Passwords are replaced by dummy strings.)

Click here to see my post.cfg file (don´t use the file as is, because it contains html tags! Load it into your browser by clicking on the link and then mark, copy and paste! Passwords are replaced by dummy strings, most folder and mailbox data is removed because it is not relevant here)

My batch and other involved files:

Now follow the batch files and a robot script (thanks to Tony Hutchins who provided this script!) which enable the magic of my setup ;-)

First I provide the setcom.bat file which is invoked directly after pressing F5 in Post/LX (by the PreOnline parameter in the cfg).
Then follows the batch file choosisp.bat, which is invoked from within setcom.bat and which is responsible for the appropriate Dial and login paramteres, depending on the ISP which shall be used. choosisp.bat is only invoked if setcom.bat recognizes a modem, either on COM1 or in the PCMCIA slot.
After that you will see postonl.bat, which handles the disconnecting after the online run (invoked by the PostOnline parameter in the cfg.
Thereafter at.scr (a robot script) is shown which setcom needs in order to distinguish, if the device connected to IrDA or the serial port is a modem or another computer.

And finally, I will show you my postlx.bat, which I use after booting the palmtop to invoke Post/LX with WWW/LX loaded resident.

For all this you need the following programs:

  • port1.exe or modem.com which looks if there is something connected to COM1
  • wwwset.exe, which sets WWW setup parameters externally
  • dis.com which is part of the WWW/LX package (terminates connection)
  • Robot/LX (Robot/LX), which executes SCR scripts
  • lxcic.com which detects, recognizes and enables PCMCIA cards
  • PDU for SMS processing
  • choice.com which is part of DOS, but not included in the palmtop ROM.
  • LXETH, the Ethernet packet driver for the LX, if you use an Ethernet card
  • maxdos, if you want to reserve as much DOS memory as possible for external programs like an editor or HV.

Download links for these utilities (as far as they are not part of the WWW/LX package) are provided directly within the batch files below (where the utilities are used), simply click on the links and download the utilities.

Click here to see my setcom.bat file (don´t use the file as is, because it contains html tags! Load it into your browser by clicking on the link and then mark, copy and paste!)

Click here to see my choosisp.bat file (don´t use the file as is, because it contains html tags! Load it into your browser by clicking on the link and then mark, copy and paste!)

Click here to see my postonl.bat file (don´t use the file as is, because it contains html tags! Load it into your browser by clicking on the link and then mark, copy and paste!)

Click here to see my at.scr file, created by Tony Hutchins.

This is the line of setcom.bat which invokes Robot/LX with at.scr:

ROBOT.EXE -q AT.SCR >NUL

It appears twice in setcom.bat. Once in the section for a device on COM1 and once for the IrDA section.

And here is my postlx.bat, which I use to start Post/LX with WWW/LX loaded resident:

@echo off
maxdos -l -e
C:\DFU\WWWLX\WWW.EXE -d !C:\DFU\WWWLX\POST.EXE
maxdos -r




Involved batch and configuration files linked from the text above:

at.scr

;at.scr, provided by Tony Hutchins
;tests, if device on COM1 or IrDA is a modem or not by sending an AT command.

e testing modem ...\n
;create file at_no_ok.tmp
file w at_no_ok.tmp
put 1\n
file c
e sending AT\n
send AT\r
e waiting for OK\n
wait 2 OK
e GOT OK\n
;delete file at_no_ok.tmp, if OK has been received, otherwise leave it there
file d at_no_ok.tmp
x

choosisp.bat

@echo off
REM CHOOSISP.BAT (choose ISP)
REM this batch is called by setcom.bat! Don't use it manually!
REM %1 is the WWW setup to use as the basis for the settings

echo.
echo.
echo Now choose ISP:
echo ~~~~~~~~~~~~~~~
echo.
echo (1) MSN Easysurfer (???)
echo (2) E-Plus Online  (60 Freiminuten pro Monat)
echo (3) TU Berlin ZRZ  (Ortstarif Berlin)
echo (4) Compuserve Classic Berlin
echo (5) Compuserve Classic International (adjust Dial string!)
echo.
choice /c:12345
if errorlevel 5 wwwset "%1 Login=117144,1520 Dial=ATX3DT0,901666255 Password=xxxxxxxx Script=CIS_Script"
if errorlevel 4 wwwset "%1 Login=117144,1520 Dial=ATDT691000 Password=xxxxxxxx Script=CIS_Script"
if errorlevel 3 wwwset "%1 Login=dherbgba Dial=ATDT31553500 Password=xxxxxxx"
if errorlevel 2 wwwset "%1 Login=hertrich Dial=ATDT010880192192 Password=xxxxxx"
if errorlevel 1 wwwset "%1 Login=msn Dial=ATDT010880192658 Password=xxxxx"

echo.
echo.
choice Disconnect directly after Online run?
if errorlevel 2 goto nodis
goto end

:nodis
echo 1 > nodis.tmp

:end

post.cfg

; Configuration file for the POST/LX package

[FILTER]
HPLX-L@=hplx-l

[MFILTER]
>=q
??>=q

Subject=h

Date:=+
Subject:=+
From:=+
To:=+
Cc:=+
*=-

[MACRO]
;F8: send / receive SMS.
;Esc Esc Home Space Menu X X S Space
;(SMS box must be first in Post/LX list, SMS batch must be external using hotkey S,
;up/down arrow of SMS box must be DEactivated (script activates for you))
#4200=#011b#011b#4700#3920#c800#2d78#2d78#1f73#3920


[SYSTEM]
;only relevant for ROBOWEB/LX:
ExtProg=ROBOT.EXE -p "RWEB1 po"
Scripts=c:\_dat\wwwlx\ROBOWEB

;for opening of attachments with the appropriate program:
PNS=maxdos pns200.exe

PreOnline=SETCOM.BAT
PostOnline=postonl.bat
ManualPack=1
ForceDate=1
Editor=maxdos PEH.BAT $f $h $x N
EditSM=maxdos PEH.BAT $f $h $x N
HangUp=0
TimeZone=+0200
Overlap=0
Quote=>_
Clog=1
TopLines=0
ZoomMode=1
LZoomMode=0
AllHeaders=0
ReFormat=1
NoQuote=0
Download=a:\attach
Japanese=0
Dir=a:\_dat\wwwlx
TmpDir=c:\_tmp
ClipFile=c:\_dat\clipvue.txt
Selected=Mail
Init=1
MIME=0
ShowDate=0
GrabLink=c:\_dat\clipvue.txt
GrabAdr=c:\dfu\wwwlx\post.adr
RegKey=xxxxxxxxxxx
GrabText=c:\_dat\clipvue.txt


[EXTERNAL]
&Disconnect WWW/LX=DIS.COM
&HV (as Webbrowser)=HV
H&V (with last email)=HV $f
&Read message in V&R=a:\programs\vr100\vr.exe $f
Edit &.CFGs=pe.exe c:\dfu\wwwlx\robot.cfg  $c
;SMS external with hotkey S:
;   robosms.bat is simple:
;   @wwwset "IrDA"
;   @robot.exe pdu
&SMS=robosms.bat

[HEADERS]
Cc:=Cc:
Bcc:=Bcc:
DeliveryConfirmation=Return-Receipt-To:This email address is being protected from spambots. You need JavaScript enabled to view it.
X-Priority:=X-Priority:
Importance:=Importance:
Sensitivity:=Sensitivity:
Depth=:=Depth=:
MaxCount=:=MaxCount=:
Return-Path:=Return-Path:

[WWW]
;only one entry here, because PreOnline=setcom.bat does everything to choose
;the WWW setup to use!
Default=Modem1

[HTTP]
MaxTotGet=100

;========= MAILBOXES ===========
; (most of mine removed here in the example)

[FOLDERS]
SMS=E
RWEB=X
Mail=E
csc=E
hplx-l=F
archivlx=F
sentarch=F

[SMS]
CheckFields=0
Alias=SMS
Dir=c:\_dat\wwwlx
SMTP=not.set
POP=not.set
Template=SMS.TPL
Del=0
Sep=0
RPA=0
APOP=0
VolatilePOP=0

[Mail]
ForceDate=1
Alias=E-Mail GMX
APOP=0
RPA=0
Timeout=60
Del=1
Sep=1
SMTP=mail.gmx.net
POP=pop.gmx.net
VolatilePOP=0
Limit=10000
Signature=c:\_dat\wwwlx\signatur.txt
Login=206139
Pass=xxxxxxxxxxx
TopLines=20
Dir=c:\_dat\wwwlx

[csc]
Alias=E-Mail Compuserve Classic
SMTP=smtp.sompuserve.com
POP=pop.compuserve.com
Login=117144.1520
Pass=xxxxxxxx
Del=1
Sep=1
APOP=0
VolatilePOP=0
Limit=10000
Signature=c:\_dat\wwwlx\signatur.txt
Dir=c:\_dat\wwwlx



;============ FOLDERS ============
; (most of mine removed here in the example)

[hplx-l]
Alias=HPLX Mailing List
Sep=1
Box=Mail
Dir=c:\_dat\wwwlx

[RWEB]
Checkfields=0
Dir=C:\_dat\wwwlx\ROBOWEB
Alias=ROBOWEB/LX

[sentarch]
Sep=0
Alias=Archive of sent messages

www.cfg

; Configuration file for WWW
; A. Garzotto, February 1998

[Global]
Command=C:\dfu\wwwlx\wwwmenu.exe
;(when www.exe is executed from command line without a program to run
;automatically, wwwmenu is executed. It lets you choose what to do (HV, Post/LX...))
Cache=C:\_DAT\WWWLX\WWW.CAC
Hosts=C:\_DAT\HOSTS
Setup=Modem1
;Log=c:\_DAT\WWWLX\WWW.LOG
UserName=Daniel Hertrich
RegID=xxxxxxxxxxxxx

[Setup]
Ether=Ethernet HomePC
Modem1=Modem on COM1
Modem2=Modemcard on COM2
IrDA=IrDA connection
PPPD=Connection to PPPD on Linux
TERM_IR=DumbTerminal_IrDA
TERM_K=DumbTerminal_Cable

[Script]
CHAP_Script=PPP dial up using CHAP or PAP
ISP_SLIP_Script=Generic SLIP (needs to be modified)
CIS_Script=Compuserve Classic dial up
pppd_script=PPPD on Linux over serial line or IrDA

[CHAP_Script]
e=Initializing modem
m=
s=\r
w=5 OK
d=
s=\r
w=75 CONNECT

[CIS_Script]
e=Initializing modem
m=
s=\r
w=5 OK
d=
s=\r
w=75 CONNECT
@=1
e=Connecting to CIS
s=\003
w=15 D:
e=Sending login
l=
s=/noint/ppp:cisppp
s=\\
e=Sending password
p=
s=\r
e=Waiting for CIS to respond
w=75 PPP

[ISP_SLIP_Script]
e=Initializing Modem
m=
s=\r
w=5 OK
d=
s=\r
w=75 CONNECT
s=\r
w=5 name:
e=Logging in
l=
s=\r
w=5 word:
e=Sending Password
p=
s=\r
w=5 :
e=Starting SLIP
s=SLIP\r
w=3 IP address is
i=

[pppd_script]
s=\r
@=3

; adjust and uncomment the following line to set up a HTTP proxy server
;HTTP_Proxy=proxy.zrz.tu-berlin.de:3128


[Ether]
Ether=1
My_IP=172.16.96.18
Peer_IP=172.16.96.1
;Peer_IP is the IP of the Computer which the palmtop is connected to (usually gateway)
DNS_IP=217.5.100.1
DNS2_IP=194.25.2.129
Script=CHAP_Script
Login=DOESNTMATTER
ModemInit=AT&F
Dial=00000
Password=DOESNTMATTER


[Modem1]
Port=1
OmniGo=0
PPP=1
Modem=1
Baud=57600
My_IP=0.0.0.0
DNS_IP=0.0.0.0
DNS2_IP=0.0.0.0
Script=CHAP_Script
ModemInit=AT&FL1
Dial=ATDT31553500
Login=dherbgba
Password=xxxxxxx

[Modem2]
Port=2
OmniGo=0
PPP=1
Modem=1
Baud=57600
My_IP=0.0.0.0
DNS_IP=0.0.0.0
DNS2_IP=0.0.0.0
Script=CHAP_Script
ModemInit=AT&FL1
Dial=ATDT31553500
Login=dherbgba
Password=xxxxxxx


[IrDA]
Port=-1
OmniGo=0
Modem=0
PPP=1
Baud=38400
My_IP=0.0.0.0
DNS_IP=0.0.0.0
DNS2_IP=0.0.0.0
Script=CHAP_Script
ModemInit=at+cbst=71,0,1;+chsn=1,1,0,4
;For correct settings of init and dial string for your mobile phone,
;please read http://www.hermocom.com/knowledgebase/hplx/mob_hplx
Dial=ATDT03031553500
Login=dherbgba
Password=xxxxxxx


[PPPD]
Port=1
OmniGo=0
PPP=1
Modem=0
Baud=38400
My_IP=0.0.0.0
DNS_IP=0.0.0.0
DNS2_IP=0.0.0.0
Script=pppd_script
Login=
ModemInit=
Dial=
Password=


;===================== Dumb Terminal Setup ===================
; CALL WITH www -d TERM-[IR|K] "!telnet local"
; useful e.g. to send AT commands manually to a modem or mobile phone

[TERM-IR]
Port=-1
Baud=38400
Modem=1
Script=T_Script

[TERM-K]
Port=1
Baud=19200
Modem=1
Script=T_Script

[T_Script]
?=
e=done


setcom.bat

@echo off
REM SETCOM.BAT
REM called by "PreOnline" feature of Post/LX
REM sets communication parameters for WWW/LX depending on attached communications hardware

if exist nodis.tmp del nodis.tmp
if exist pcmcia.tmp del pcmcia.tmp
REM nodis.tmp is used by postonl.bat to prevent automatical connection termination.
REM The file will contain nothing, postonl.bat only checks if it exists!
REM Similar with pcmcia.tmp: it tells postonl.bat that there is a PCMCIA modem
REM so postonl.bat can switch PCMCIA power off after the online run.

lxcic>NUL
if errorlevel 7 goto un_card
if errorlevel 6 goto lan_card
if errorlevel 3 goto un_card
if errorlevel 2 goto modem_card

:un_card
port1 > NUL
if errorlevel 1 goto no_ext
echo External modem or serial line to PC detected
echo Testing if modem or not...
wwwset "Port=1"
robot.exe -q AT.SCR > NUL
if exist at_no_ok.tmp goto com1noat
echo the device on COM1 is a modem! :-)
call choosisp.bat Modem1
goto end

:com1noat
del at_no_ok.tmp
echo Connection over COM1, but no modem!
echo Setting up for Linux PPPD over serial line
wwwset "PPPD port=1"
goto end

:no_ext
echo No extermal device found, trying IrDA setting
wwwset "Port=-1"
robot.exe -q AT.SCR > NUL
if exist at_no_ok.tmp goto ir_noat
echo The device on IrDA is a modem!
echo.
choice Disconnect after Online run?
if errorlevel 2 goto echo 1 > nodis.tmp
wwwset "IrDA"
REM you could also call choosisp.bat from here, if necessary!
REM for me it isn´t, because I only use one ISP with my mobile phone
goto end

:ir_noat
echo NO MODEM on IrDA. Setting up for Linux PPPD over IrDA...
wwwset "PPPD Port=-1"
goto end

:lan_card
echo LAN card detected
echo loading packet driver....
c:\dfu\lxeth\lxen2216.com 0x66 > nul
wwwset "Ether"
goto end

:modem_card
wwwset "Port=2"
REM tell postonl.bat that there is a pcmcia modem:
echo 1 > pcmcia.tmp
echo Modem card detected (COM2)
call choosisp.bat Modem2
goto end

:end

postonl.bat

@echo off
if exist nodis.tmp goto nodis

:dis
dis.com

REM if there is a PCMCIA modem, switch PCMCIA power off to save power:
if exist pcmcia.tmp lxcic o > nul

echo unloading Packet driver if LAN card is present...
lxcic>NUL
if not errorlevel 6 goto common
echo LAN card detected. Disconnecting...
c:\dfu\lxeth\termin 0x66
goto common

:nodis
echo Not disconnecting now.
echo Disconnect manually with Menu-X-X-D
goto common

:common
call sr.bat
REM (sr.bat is from the ROBOWEB package)
if exist nodis.tmp del nodis.tmp
if exist pcmcia.tmp del pcmcia.tmp

Archived 2013-12-08
This page has been archived and some links may not work correctly anymore. No updates of this page will be done anymore.

Ways and problems of connecting the palmtop to differend kinds of devices via Infrared


Contents of this page:


Preface

I removed my instructions to build an IR transceiver device for Desktop PCs from this site, because there are now many other instructions available on the web which are way better than mine was. Another reason is that I used an Infrared transceiver component which is not available anymore, the HP HSDL 1001. The newer Vishay TDFS 4500 and similar products are a better choice nowadays.

You can find instructions to make infrared transceivers for your desktop PC here:

Please note that these transceivers connect directly to the "Infrared" connector on your motherboard. No way to connect them to a serial port or USB. For that purpose there are special devices called "IrDA dongles" available. You can buy these devices in several variations, the most common one nowadays may be the USB version.

Introduction: About IR communication with the HP DOS palmtops

The main issue with the palmtops HP 95LX, 100LX, 200LX, 1000CX and 700LX is, that these devices are not fully IrDA compliant.
IrDA defines several network layers. The lowest layer, the physical one, is SIR, also known as HPSIR, because HP invented it. This layer is supported by the HP LX palmtops, i.e. all IrDA devices arephysically able to establish an Infrared communication path to the palmtop.

But the logical way of communications causes problems: Almost all IrDA compliant devices which are available these days (e.g. cell phones, PDAs, Laptops, LAN adapters, digital cameras...) make use of some of the other layers defined by IrDA. These other layers are all implemented in software, so theycan be switched off if the software is modifyable, e.g. on laptops which run Linux. Maybe even IrDA drivers in Windows 9x can be made work in plain SIR mode by modifying the Windows registry (see PC part of this page below).

SIR (serial Infrared) is basically the RS232 protocol, but with other signal levels and impulse lenghts. All other IrDA protocol layers (IrLAP, IrLMP, IrCOMM, IrLAN, IrOBEX) are connection management and handling stuff, such as adjusting the baud rate, recognizing the peer device, setting up "virtual" ports which can be used by software which wants to talk to "normal" ports like LPT or COM or network devices and so on. As soon as software relies on these upper IrDA layers, a communication with the HP palmtop as is is impossible.

Why do I say "as is"? Read on!

Connecting to cellular phones

Well, there are exactly two programs by now which are able to drive the palmtop´s IR port in a more IrDA-compliant mode. Only a few parts of the full IrDA protocol are implemented there, so it is not possible to do all IrDA things with that software.

Both programs are written by Andreas Garzotto, one of them is commercial software and sold by D&A Software. It is called "WWW/LX". This is an Internet suite with TCP/IP stack, mail client, web browser, and clients for various purposes, such as FTP, finger, get, ping etc. This one supports talking to IrDA cell phones via IR, so you can use a cell phone as a modem or you can use AT commands in terminal mode or even automated to administrate your cell phone (phone book up/download, ring tones, logos etc.) WWW/LX implements parts of the IrCOMM, IrLAP and IrLMP protocols.

The other one is free software called "IR.EXE". This one implements the connection free part of the IrOBEX protocol in addition to IrLAP. IR.EXE is also available over the D&A software FTP server. You can send and receive OBEX objects with this software, which is also supported by cell phones, PDAs and other devices.

So if you want to connect to cell phones via IrDA, there is generally no big problem. Dependent on your needs you have up to two choices.

Regarding the specifications of different tested cell phones, please read my "mobile HPLX" page!

Connecting to other PCs for file transfer

If your computer and OS (or IR dongle device drivers) are capable to talk the plain SIR (serial Infrared) protocol via its IR port, everything is fine. Then you can use every application which you also would use with a serial cable connection to transfer files (Transfile Win200, Laplink Remote Access, zip, InterLink/InterServer, X-Finder....).

If your computer can "only" talk the full-featured IrDA protocol, you may have a problem. If you connect an IrDA transmitter device to your computer, Windows 98 recognizes it and sets up "virtual" COM and LPT ports. These port types are defined by the IrDA standard (IrCOMM), but are not suitable to communicate to the palmtop, because they use these advanced IrDA features (keywords IrCOMM, IrLTP, IrLMP, IrLAP etc. - I don´t want to go into detail here, please refer to http://www.irda.org). The problem is that these "virtual" ports don´t use the plain (HP)SIR protocol, but all these add-on connection handling protocols, which the palmtop isn´t capable to handle. The above mentioned programs WWW/LX and IR.EXE are limited for use with cell phones and IrDA modems.

On the other side, you may need these IrDA-specific features on your PC if you want to use it to talk to a mobile phone, a newer PDA or some other real IrDA device.

What about a general IrDA driver for the palmtop?

This is an idea which has been mentioned a lot of times in the HPLX mailing list. But unfortunately, it is simply not possible to create a driver which sits between the application and the IR port, because the IR port is directly addressed by all DOS programs with their read / write routines. They speak directly to the hardware. So no other program or driver would have a chance to modify the data stream in any way before it is written to the serial port.

Archived 2013-12-08
This page has been archived and some links may not work correctly anymore. No updates of this page will be done anymore.

Internet connection sharing for HP Palmtops

Or: How to connect a handheld or other PC via serial line to a PC to use its Internet connection
Especially: Sharing an HP Omnibook 800CT wireless LAN access over IrDA with an HP 200LX palmtop

last updated:


Contents of this page:


Introduction:

If you have a PC at your home or at work which is connected to the Internet via a fast and reliable connection, such as DSL, Ethernet, ATM, X25 or even via modem or ISDN, and if you have a handheld computer which you also want to connect to the Internet from time to time, for up- and downloading emails, for example, you may not want to establish an extra expensive Internet connection via modem or GSM, but rather want to make use of the existing connection.

This is possible. I will describe here how to set up a PC running Linux or Windows so that you can connect your handheld via serial port or IrDA to the PC and use the Internet connection of the PC also with your handheld.

Since I use the HP 200LX palmtop and only Linux on my PCs, I will focus mostly on these points of view, but I will also describe how to set up Windows on the "server" side and any communication software on the "client" side.

Windows server: MochaPPP:

First download MochaPPP from http://www.mochasoft.dk/download.html (look for the "Mocha W32 PPP" in the "Palm and Visor" section) and install it on your Windows machine.

Then

  1. run the program MPPP.EXE.
  2. Set speed to 38400 (once this works you can go higher and explore the limits, make sure you have always set the client machine to the same speed!)
  3. Tell MochaPPP what device you use (if you use the HP 200LX palmtop, tell MochaPPP it was a WinCE device)
  4. Since I have never worked with MochaPPP I cannot say exactly how to set it up for an IrDA connection, but since Windows usually assigns a virtual COM port to an IrDA interface, you should probably simply shoose this virtual COM port as the port to be used by MochaPPP.
  5. Then connect your already configured client device to the PC. Use a nullmodem cable, not a straight-through serial cable! For more information about these different kinds of cables, also related to the palmtop HP200LX, please see my RS232 page!

Unfortunately, Windows 2000 and Windows XP use another driver concept as the older Windows versions, so there is no "virtual COM port" assigned to an IrDA device anymore. There are thiird party drivers to solve this problem:

Click here to jump to the client setup guide.

Linux server: pppd and IP masquerading / forwarding:

Assuming you have already a working internet connection, I will now guide you through the steps necessary to share that Internet connection with a device attached to the serial port or IrDA port of your linux machine.

The short story

A simple shell script can do the job under certain circumstances. I suggest you to try that way first, and if it doesn't work, use the detailled instructions below.

The shell script looks like this (I have named it "/sbin/palmtop_gateway"; you have to run it as root):

#!/bin/sh

# Setup IP masquerading on your Internet connection network device
# (change "wlan0" to the appropriate device, e.g. ppp0, eth0, ippp0...):

iptables -t nat -A POSTROUTING -o "wlan0" -j MASQUERADE

# This is for IrDA connection on an HP Omnibook 800 notebook only
# comment it out if you don´t use an Omnibook 800:

modprobe vlsi_ir

# This is for IrDA connections only (not only Omnibook 800)
# comment it out if you use a serial connection instead of IrDA:

ifconfig irda0 up

# This is the PPP server (PPPD) call within an infinite loop:

while [ 1 ]
do
/usr/sbin/pppd /dev/ircomm0 38400 172.16.96.10:172.16.96.11 proxyarp local noauth silent nodetach ktune ms-dns 217.5.100.1
done

Adapt the pppd line to your needs:

  • /usr/bin/pppd is the location of the pppd binary,
  • /dev/ircomm0 is the name of the port where the device is connected which shall use the Linux computer's Internet connection. (/dev/ttyS1 for "COM2", /dev/ttyS0 for "COM1", /dev/ircomm0 for an IrDA port...),
  • 38400 is the baud rate, you can probably go higher, but try this one first,
  • the following two IP addresses are the one pppd uses on the Linux machine and the one the client should get. You can probably use the ones used here, except you already have a private subnet which uses these IP addresses. They must be unique in your subnet.
  • proxyarp tells pppd to handle ARP requests on behalf of the connected device
  • local Tells pppd not to use modem control features.
  • noauth Bypasses all authentication. You can also set it up to use e.g. CHAP or PAP. But noauth should be enough for private use it you do not use a dialup connection between the Linux PC and the device which you connect
  • silent Tells pppd to wait for the connecting device to send LCP packets rather than trying (and failing) when no device is connected. Replaces the 'passive' option in older versions.
  • nodetach Tells pppd to stay attached to the controlling terminal rather than forking off as a background process. We want ONE pppd in charge of this vty!
  • ktune tells the kernel to enable IP forwarding
  • ms-dns xxx.xxx.xxx.xxx Tells pppd to send our DNS server (217.5.100.1 in my case) parameters to the attached device. This avoids having to hard-code values on the client, in case things change.

This shell script needs the executable "iptables", a newer version of pppd which supports the ktune parameter and the NAT (network address translation) kernel modules.

Usage: Simply adapt this script to your needs and start it. If it leads to error messages, try to find the reason. If it doesn´t, connect the device which should participate in the internet connection of the Linux computer and let it connect. When you don´t need the Internet connection sharing anymore, stop the script by pressing (and maybe holding for some seconds) Ctrl-C.

If this setup doesn´t work for some reason, or if you want a more sophisticated setup where you don´t need to manually start a script, read on!

Click here to jump to the client setup guide.

The long story

Attention: The following things have to be done as root, so be careful!

The first thing you need is the ability of Linux to share its Internet connection at all. This is done by a mechanism called IP forwarding and IP masquerading. If you want to learn more about these techniques, please read the IP masquerading howto. There are more than one way to setup IP masquerading and forwarding, please consult the manuals and docs of your Linux distribution to learn how to do it in a distribution-specific way. I describe it here in a generic way which should work for all distributions using a recent kernel version (i.e. 2.4.0 or above). If you have another kernel version, you should read the IP masquerading howto.

First, switch on everything which is necessary for IP forwarding and masqerading in the kernel configuration and compile a new kernel. Maybe this is not necessary in some cases. If you don´t feel comfortable compiling a new kernel, don't do it first and try if it works with your current kernel. You need to go into the "networking options" and switch the netfiler on. Then in the netfiler section everything related to NAT and IP forwarding has to be enabled.

My relevant sections in /usr/src/linux/.config look like this:

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_NETLINK_DEV=m
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set

#
#   IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_QUEUE=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_MIRROR=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_NAT_FTP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_TOS=m
CONFIG_IP_NF_TARGET_MARK=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_COMPAT_IPCHAINS=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_COMPAT_IPFWADM=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IPV6=m

Also make sure the driver for the serial port and / or IrDA interface is included into the kernel or compiled as module. I assume it works already. If not, please make it work before you go on. Especially an IrDA driver may be a bit tricky to set up. I use the HP Omnibook 800CT with its IrDA driver vlsi_ir by Martin Diehl to share the wireless LAN access with my HP 200LX palmtop. Please note that the vlsi_ir driver is included in the Linux kernel since version 2.4.9. In order to make IrDA work on my Omnibook I use this script:

#!/bin/sh
modprobe vlsi_ir
modprobe ircomm
ifconfig irda0 up
echo "1" > /proc/sys/net/irda/discovery
echo Discovery says:
cat /proc/net/irda/discovery

(The last three lines are optional. They show you if another device is in the range of the IrDA interface. You will see the name it identifies itself with.)

In order to set up the netfilter, you need the iptables package (if you do not have it already), which you can download at http://netfilter.samba.org/. I use version 1.2.4.

Also you need the pppd (PPP daemon), which is certainly part of your Linux distribution.

Now we can start setting the whole thing up. In order to enable IP forwarding and masquerading, execute

echo 1 > /proc/sys/net/ipv4/ip_forward
/usr/local/sbin/iptables -t nat -A POSTROUTING -o "eth0" -j MASQUERADE

The first line enables forwarding (not necessary when using a recent version of pppd! The pppd parameter ktune can do that job for you!), the second line enables masquerading. Replace eth0 by your network device which is connected to the Internet. (Probably ppp0 if you use a dial-up connection, ippp0 for ISDN, wlan0 for wireless LAN...., find out with "ifconfig" while you have an active Internet connection). the iptables binary may be placed on another location than /usr/local/sbin - change that if necessary.

Palmtop user Ed Padin reported success using ipchains instead of iptables using this command:

ipchains -l forward -j MASQ

If you have troubles starting iptables, try to unload the ipchains module, which can disturb iptables (rmmod ipchains).

You can put the IrDA module calls and the iptables / ipchains setups into /etc/init.d/boot.local, so it is executed automatically at boot time.

Now you must set up the Linux computer as a PPP server for the attached device, using the pppd. This can either be done using a simple pppd call from a shell script as described above, or you can use init to start the pppd as a deamon in background. Here is an example how to call it for runlevels 2,3,4 and 5:
Append a line to /etc/inittab:

palm:2345:respawn:/usr/sbin/pppd /dev/ircomm0 38400 172.16.96.10:172.16.96.11 proxyarp local noauth silent nodetach ktune ms-dns 217.5.100.1

(Adapt the parameters as described above) When you have appended this line to the inittab, run a telinit q to let the system reread the file and use the new settings. maybe a killall pppd is necessary to kill an old pppd and to let the new one start automatically after a change of parameters. You can check easily if the correct pppd runs by typing ps -x | grep pppd.

That´s it. After configuring your client device you should be able to use the PC´s Internet connection over the serial port. Click here to jump to the client setup guide.

 

Client configuration:

In general you can use any software on the client machine which is able to talk the PPP protocol over the serial port or the IrDA port. For setting up a Palm, please go to the top of this page and follow the Palm link under "Related pages". Here I will describe the process of setting up the WWW/LX software on the HP 200LX palmtop, but this should also show how to set up every other piece of software.

Here are the relevant parts from my WWW/LX config file www.cfg:

[Setup]
...
PPPD_linux_IR=pppd on linux Omnibook IrDA

[pppd_script]
s=\r
@=3

[PPPD_linux_IR]
Port=-1
OmniGo=0
PPP=1
Modem=0
Baud=38400
My_IP=0.0.0.0
DNS_IP=0.0.0.0
DNS2_IP=0.0.0.0
Script=pppd_script
ModemInit=
Dial=
Login=
Password=

Explanation:

  • The Setup entry is WWW/LX specific and only adds a short description to the setup name.
  • [pppd_script] is the script WWW/LX uses when connecting over the serial line. It is a very simple script which does the following:
    • s=\r -- send a carriage return (= press the Enter key)
    • @=3 -- pauses for 3 seconds before PPP connection begins.
  • The remaining lines are the settings WWW/LX uses for the connection:
    • Port=-1: Use port COM1 and set it to IrDA mode. Attention: On the HP 200LX this is only possible with WWW/LX, not with pther software, because the IrDA protocol is totally implemented in software, there is no generic IrDA support by that device! See also my IrDA page! Use Port=1 for a wired serial port connection (i.e. on the Server side /dev/ttySx or COMx).
    • PPP=1: Use the PPP protocol
    • Modem=0: Use a direct serial line
    • Baud=38400: Must match the speed setting on the Server side!
    • MY_IP, DNS_IP, DNS2_IP=0.0.0.0 tells WWW/LX to determine the correct values during the login process. You can also give it statically here if you have troubles with the dynamical setup. The dynamical setup has the advantage that you have to change it only on the server side if something changes.
    • Script=pppd_script: The script to use for the login process
    • ModemInit=, Dial=, Login=, Password=: Since no authentication and no modem is used, these parameters do not need any value.

Attention WWW/LX users who use setcom.bat in conjunction with modem.com to let the palmtop determine automatically the necessary WWW/LX settings: Since a wired connection to a Linux PC running pppd (and eventually even MochaPPP on Windows machines) causes modem.com to think there is a modem and let setcom.bat then execute wwwset.exe with your modem settings, make sure these settings do not interfere with your remaining setup for this kind of connection!

Archived 2013-12-08
This page has been archived and some links may not work correctly anymore. No updates of this page will be done anymore.

See also: Tutorial: Disassembly of a 200LX 

(EMI = Electromagnetic Interference: Communication problems when the HP Palmtop cannot communicate via InfraRed anymore when a mobile phone is near, e.g. in setups where the Palmtop should use a mobile phone via IrDA for Internet access.
Contents of this page:


NEWS:

I have bought a used 700LX to study how HP solved the EMI problem there (since the 700LX is designed to work with a GSM phone on top, it must be somehow shielded against the EMI, and tests with ring.com and a seperate GSM phone so the dehaviour of the 200LX and 700LX regarding EMI coulr directly be compared, showed that indeed the 700LX is only disturbed marginally by a mobile phone). The results can be viewed on the separate 700LX page: Click here!


Introduction:

The problem appeared, when the first people wanted to use their HP 100/200 LX to connect to the Internet using the IrDA interface of a mobile phone in the summer of 1999. It is nice to have the ability to simply put the palmtop upon a table, put the cellular phone besides it, and surf the web, download email etc.
Actually it should be possible without problems, because the palmtop has got an IR port, and more and more cellular phones also have an IrDA port which looks to a PC just as a standard modem. The ´internet suite´ WWW/LX by D&A Software is the only software which is able to speak the IrDA protocol over the palmtop´s IR port. Actually the IR port of the palmtop speaks the "HPSIR" protocol which cannot be handled by modern mobile phones. So you have to use WWW/LX if you want to go online via IR.
But you will run into the following problem: The connection is either terribly slow, or it isn´t possible at all to get a working connection.

The people who ran into that problem first were Andreas Garzotto (programmer of WWW/LX), Stefan Peichl and I, Daniel Hertrich. Later Mark Willis, Joeseph Buford and Jerome V. Healy joined us to help. With time I got many requests for help regarding that subject, but a real solution isn´t found yet!

The problem is caused by the following:

Everytime we want to establish a connection to the internet with the mobile phone via infra red (IrDA-protocol by WWW/LX), the palmtop receives strange disturbance signals. These signals are caused by voltages induced by the electromagnetic field surrounding the antenna of the mobile phone.

Actually these signals must have a frequency of 900MHz, 1800MHz or 1900MHz (GSM, PCS), depending on the frequency of the cellular network. But these modulation frequencies are pulsed with a frequency of about 1,6 kHz (maybe that´s only true in my case - I don´t know if the pulsing frequency differs between cellular networks!).
And these pulsing is probably the frequency which causes the problems.
I don´t think that the very high frequency of 1-2GHz causes problems. because this frequency is so high that it cannot be decoded by the decoder hardware of the palmtop (and even is not shown by a normal oscilloscope) - see the pictures below!
But the 1,6 kHz signal is shown and decoded! And it is decoded into many, many characters that prevent the IrDA protocol from working properly.
The signal that actually comes through the photo diode has a pulse frequency of around 10 kHz (depending on the character that was sent by the sending device).

If you would like to test these interference by yourself, you can use Stefan´s software ´RING.COM´. It displays every character received by the IR receiver circuit (also the induced signals) and every character causes a click in the speaker. And the average of ingoing characters per second is measured. So you can see how bad these interferences are in your case. Maybe send as a reference a vcard over IR from your telephone. That will not disturb the IR port, but only the actual IrDA data will be arrive in RING.COM (because the antenna pf the phone doesn´t send anything). Then establish some kind of radio connection (i.e. do a call) and place the phone near the palmtop. You´ll see and hear the disturbances arriving in RING.COM!
You can download RING.COM with documentation  here.

Another experience is that with Siemens phones (S25, S35i), the disturbances are so bad, that most of the times a connection isn´t even possible, but with Nokia phones (8810, 7110, 6210...) you get a connection in most cases. You have to find the ideal distance between palmtop and phone in order to suppress most of the disturbances but keep the IR link working. For Siemens phones, this distance is about 15-20cm, for Nokia phones you can place the phone with a much bigger distance from the palmtop. About 50cm should still be possible. Several people worked out little tricks: For example with the Siemens phones (probably also with others) it helps if you take the phone in your right hand during the internet connection: touch the display with your palm, lay your fingers arund the upper edge of the phone and touch the cak of the phone (where the antenna connection is) with your third and fourth finger. That seems to bundle the emitted electromagnetic disturbances in a way that it doesn´t reach the palmtop anymore.

But of course we want to find a durable working solution!
First I thought, the right solution would be to build a high pass filter into the circuit of the IR Receiver to filter out all high GSM frequencies.

I thought we should replace the component no 7 (see picture below) by a properly dimensioned high pass filter. I tried this. But without any luck! :-(
I tried to replace component no 7 with different capacitors of values 150 pF up to 330 pF (My calculations showed that  220pF  is the right value to drop 1,6kHz signals by approximately 15dB and leave the 10kHz sinals untouched. With a filter of 1st grade, a higher attenuation of the 1,6 kHz signal is not possible -- the filter of 1st grade is built by the inserted capacitor and the resistor to ground (no 12 and 13) with a value of 100kOhm + 6.81kOhm = 106,81 kOhm).

Before I did these tests I thought that the GHz-frequencies directly caused the problems and inserted several low pass filters into the receiver circuit. None of them worked)

One solution that already works in some palmtops is to connect pin 2 of the photo diode (the right one, if you watch the diagram below) to ground. It´s not such an elegant solution, because it drains extremely much power and we don´t know if it can hurt the circuit. And it doesn´t work in every machine. About every third machine we tested that ´low cost solution´ in wasn´t affected by the EMI anymore. The other machines couldn´t at all use the IR port anymore. We don´t know why. But Stefan used this solution for about half a year successfully and his palmtop survived it.


Drawings (schematics and board layout)

The circuit board layout with component numbers (description of the components below):

100lx_irda_circuit
schematic

The components of the IR receiver circuit:

PD: the photo diode
1:    R = 21,5 k
2:    R = 21,5 k
3:    Transistor KST 5179 or 2N 5179 by Samsung (pins see below) (Data sheet (PDF, 50kB) downloadable here!)
4:    Transistor KST 5179 or 2N 5179 by Samsung (pins see below) (Data sheet downloadable above (=part #3)!)
5:    C = xx xF (value unknown)
6:    R = 215 R
7:    C = 0,01uF (marking "KA4")
8:    C = ´685´
9:    C = ´105´
10:  R = 10 k
11:  R = 21,5 k
12:  R = 6,81 k
13:  R = 100 k
14:  IC ´TLC372C´ by TI  description here (HTML with llink to PDF data sheet)

The pins B,C and E of the Transistors 3 and 4 are placed this way:

  ------
B O    |
  |    |
  |    O C
  |    |
E O    |
  ------
 

The circuit diagram of the IR receiver (self-explored by Joeseph Buford and me):

circuit


My measurements

I made the measurements under the following conditions: An opened 100LX lying on the table, the Siemens S25´s IR port and the 100LX´s IR port are facing each other with a distance of about 3 cm.

You can see the arrangement here (on this picture the S25 is a little bit more away from the 100LX than 3 cm):

The following picture shows my measurements of the signal voltage of an IR-received character (measured at pin 3 of the 372 chip no. 14) without any interference.

Horizontally, one division is 0.2ms, so the frequency of the pulses is approx. 10 kHz
Vertically, one division is 2 V, so the peaks are approx. +/- 1V
 

The following picture shows my measurements of the voltage induced by the S25´s electromagnetic field:

with the same scalings of both axes as the picture above.
The signal has got a frequency of about 1.6 kHz (period cycle is abt. 0.6 ms).


If you would like and/or feel able to help, ideas are greatly appreciated by: Andreas Garzotto, Stefan Peichl, Mark Willis, Joseph Buford, Jerome V. Healy, me and many, many other users of the HP 200LX!
Please email me! I´ll forward your idea to the others.
Thanks to all who help(ed) us and to all who will help!

Do you like to support me?

Dear fellow Palmtopper!

If you like, you may reward me for the work I put into this website with a donation.

 

For a donation in US$:

For a donation in €:

Your donation, even if it's just a single USD, will help me to:

  • finance the server that hosts the site
  • justify time I spend with maintaining the site and do not spend with earning money otherwise (wife is watching! ;D)
  • just continue to be motivated :)

Since my company "hermocom" does not exist for many years anymore, I am now spending my spare time and private money for all of this. Thank you very much! 🙂

Yours truly,
Daniel Hertrich