☰ Menu [BAI] BAI

Böcherer Angewandte Informatik SendXMS® Frequently Asked Questions


How can I use a .NET dll as an userexit

If you want to use a function within a DLL as an userexit you have to use a system (unmanaged) DLL. If you want to create your userexit with a .NET framework you should use the opensource project NuGet to export unmanaged code. Please read this article how to export managed code. (We never tried it ourselves)

How can I use a modem connected via Ethernet

To use a (GSM) modem which is connected via Ethernet (AT over Ethernet) you should just install a standard (GSM) modem using a serial interface and then manually edit the sendxms.cfg file. Add the parameter AtOverEthernet=TCP (for a raw TCP connection) or AtOverEthernet=Telnet (for using Telnet protocol) and specify the IP address and port using the Address= (instead of Device=) parameter.

Installing SendXMS as a service does not work using Vista or Windows7

To install SendXMS as a service you have to be an administrator. For that you should either start a console window (cmd.exe) as an administator (select 'Run as an administator' in the context menu) to run SendXMS or you should use the utiliy XMSasAdmin with the same command line options as SendXMS.

The graphical user interface (Visual-SendXMS) does not start

The graphical user interface requires the most actual Java version (6.0 or higher).

How do I configure a proxy for HTTP connections

Specify the address and port of the proxy in the Address and Port parameters of the corresponding provider definition and specify the address of the SMSC/MMSC as part of the URI parameter (like URI=http://mms.t-mobile.de/servlets/mms).

Using the internal ODBC spool API I receive an error message about 'invalid cursor state'

It seems that your ODBC driver does not support multiple acitve result sets. Either use any other ODBC driver or define as a workaround
in the [ODBC] chapter in sendxms.cfg.

Using the internal ODBC spool API on Unix/linux does not work

Asure that unixODBC will be used as the ODBC manager.

My userexit will be called but the parameters just consist of silly characters

Please be aware that all parameters are UTF-8 encoded. If you are using any UNICODE program as an userexit it might be possible, that the operating sytem (or the userexit application itself) tries to convert the parameters to UNICODE. If the system encoding is not UTF-8 (but for example ISO-8859-1) this conversion will not work. To avoid such problems you should either
  • use any byte oriented (non UNICODE) program as an userexit or
  • set the system encoding (locale) to UTF-8 (for example by setting 'LC_TYPE=de_DE.UTF-8' or (using Windows) with 'chcp 65001' (if you are using a batch file (batch files do not work with UTF-8 encoding) as an userexit you should use the ANSI code page also as the OEM code page (e.g. 'chcp 1252')))

OTA configurations can not be saved on the receiving handset

This problem seems only to exist with Nokia Series 40 phones (because of a WBXML bug in this phones). The additional (XMSConv) command line parameter --NokiaWbxmlBug=true will fix this.

OTA configurations can not be saved on the receiving handset

This problem seems only to exist with Nokia Series 40 phones (because of a WBXML bug in this phones). The additional (XMSConv) command line parameter --NokiaWbxmlBug=true will fix this.

Using XMSConv with the option -fEMS seems to work but the phone does not receive any picture or melody

Using -fEMS (or -fEMS5) converts the content to EMS 5.x but many phones support do only support EMS 4.x. Use -fEMS4 instead.

Using Unix, Linux SendXMS creates all necessary directories, but with wrong access rights so that no files can be saved within these directories

All directories are created with the access rights defined by the user command umask. So you just have to specify the required rights using umask before starting the program.

I can't send messages using SMS for ISDN (Telekom Germany; ES201912_1)

You have to use a CAPI device and you have to submit your caller ID (CLI).

I can not receive messages using OneAPI

To receive norifications about incoming messages you have to register your application. For that you should define one provider definition for incoming messages (with Detach=AcceptXMS) and one for outgoing messages (with Detach=Send and NotifURL should point to the provider definition for the incoming messages). Have a look to sendxms.pro in the samples subdirectory. Then you have to use a command like:
sendxms -ptest -aReceive 1234 "<register>"
sendxms -ptest -aReceive 1234 "<unregister>"

I can send but not receive messages using SMS for ISDN (Telekom Germany; ES201912_1)

You have to register your phone number for receiving messages. For that you just have to send a message with the text 'ANMELD' to the short number 8888.

Why do I need a phone number or an IP address for registration?

The phone number is a part of the registration key and is used as the originating address for outgoing messages. So you should specify the number of your modem line or of your office. For the Professional-Edition and above the IP address of the used computer is also required.

Why do I always get error -10 and/or -34 although the device seems to dial?

Maybe the service computer of your provider is overloaded. This is a common problem for all German providers, please contact the provider and ask for better access lines.

Why do I always get error -23 although there is a device defined?

You have selected a provider which requieres a different type of device. For example if you select select a provider with LINETYPE=ISDN and there is only a modem (LINETYPE=ANALOG) defined you will get this error.

What is the meaning of error number -8?

The service computer has to answer to a request within a specified timeout. If this doesn't happen you will receive this error. If you haven't defined a PROTOCOLTIMEOUT (sendxms.pro) a default is used which is higher then the recommended protocol specification, but you can try to increase that value.

What is the meaning of error number -10?

The SMSC has to send at the beginning of a TAP session the string ID=. The error number -10 indicates that SendXMS didn't receive that string and therefore was not able to continue. Maybe the workload on the service computer is too much at that time and it will work if you try it again at a later time. Maybe the service computer doesn't support the TAP protocol, then you have to edit the file sendxms.pro and change the protocol for the provider from TAP to UCP (this only happens if you specified a new provider definition which wasn't preconfigured). When both doesn't work then there is a problem reading from the device. In that case try to set WAITAFTERWRITE and/or WAITAFTERCONNECT.

What is the meaning of error number -16?

SendXMS got a connection to the service provider, but the provider didn't accept the message. This can be a temporary problem (too much workload on the service computer) or you have specified the wrong protocol for the provider. If the provider uses UCP you have to set the MODEMINIT parameter to the command to switch your modem to V.42/LAPM. If this isn't possible set WAITAFTERCONNECT to about 2 seconds (maybe more, you have to try).

What is the meaning of error number -34?

SendXMS didn't get a connection to the service provider. Maybe your modem is blocked by another program, all incoming lines of the provider are busy or you have specified the wrong protocol (TAP) for the provider.

What is the meaning of error number -39?

SendXMS can't run in server mode. If you get this message then either SendXMS isn't able to create a PID file (not enough access rights) or there is already another regular PID file (sendxms.pid). In the first case you have to give SendXMS the required rights to generate the PID file and in the second case you have to test whether there is already a SendXMS server running or whether there is any other process with the PID contained in sendxms.pid (this may happen after a system crash). If there is server already running everything is OK, if not you have to manually delete the obsolete PID file.

SendXMS seems to communicate with my modem, but it always aborts with the message 'no connection'

Maybe your modem doesn't answer with a 'CONNECT' message after the connection is established. You should add a command in the INIT string to force the modem to answer with 'CONNECT'. If you are connect to a pBX it is possible that you have to append X3 to your INIT command (sendxms.cfg chapter [Device]) and if you require a 0 (or something else) to get a line you have to change the DIALPREFIX (ATDT0w instead of ATDT).

SendXMS does not receive any message nor send any spooled message although messages can be send from the command line?

Check whether SpoolDir, ReceiveDir and UnsentDir are located on a network drive. In this case move them to a local drive.

Why does SendXMS get a connection to the service provider, but can't send the message?

This can be a temporary problem, so try it again. If the error still occurs check the settings for the provider and the modem settings. If all is correct try different settings for the parameters WAITAFERCONNECT, RTSCTS and WAITAFTERWRITE.

What is the meaning of WAITAFTERCONNECT?

For the UCP protocol the modem has to use V.42/LAPM. If this isn't possible SendXMS has to wait after the modem got a CONNECT up to 15 seconds (protocol specification).

How can I replace a previously submitted messages?

For that you should use the parameter PID (ProtocolIdentifier; see GSM 03.40). If you send multiple messages with the same PID to the same recipient (using the same SMSC) the previously submitted messages are replaced by the last one. To use this you should add the command line parameter --PID=<n> or the spool file line PID=<n> (where <n> is in the range 65..71).

Why are in sendxms.pro the additional parameters MODEMINIT, BAUD, ... present?

In sendxms.cfg you specify the global settings for your devices, which are used for all providers. But some providers need special settings which you can specify in sendxms.pro and which are only used for the corresponding provider.

I can send messages to D1 and D2 but Scall and Skyper doesn't work

Using Scall and Skyper with a modem you have to set MODEMINIT in sendxms.pro in a manner to tell the modem not to filter XON/XOFF characters.

How can I send messages to Scall, Skyper or CityRuf using ISDN?

If you are using CAPI 2.0 you can use the predefined providers with the extension _ISDN. If you are using a ISDN terminal adapter or any device driver you have to define a MODEMINT string (in sendxms.pro) to use the correct protocols (B2=X.75, B3=T.70NL/T.90NL).

Why can I receive but not send messages with my GSM card/modem?

Maybe you have to remove (or to set) the parameter PDUWITHOUTSCA=1 in sendxms.cfg chapter [Device]. Confirming to GSM 07.05 a PDU (used in a send request) should be prefixed by the SCA, but some devices require the PDU without SCA (e.g. Siemens M1, Falcom A1, Xircom CreditCard).

How can I use multiple ISDN adapters with SendXMS?

Define multiple devices (DEVICETYPE=CAPI 2.0) in sendxms.cfg each with different values for the parameter CONTROLLER.

I'm using CAPI 2.0 and can't get any connection?

Maybe you haven't set the parameter MSN in sendxms.cfg or you have set a wrong number. Some PBX doesn't allow to connect if you are using a wrong number. Another problem may be the parameter DIALPREFIX. Using CAPI you can't use any modem commands (for example ATDT) within this parameter. Specify ONLY the digit(s) you require to get a line.

I can send SMSs with my GSM modem, but I can't read incoming messages

Maybe you have to set a different memory address in the parameter INIT2 in the chapter [Device] in sendxms.cfg (for example: INIT2=AT+CPMS="SM").

SendXMS works fine but if I call it within a batch or in the background it does not work

You should increase the priority for SendXMS (parameter PRIORITY in sendxms.cfg). The value has to be in the range from -15 (high) to 15 (low).

I'm trying to use SendXMS with an AVM B1 ISDN adapter, but it doesn't work

Please check which B1 firmware you are using. You have to use at least version 3.06-12.

I can't start setup or SendXMS on Linux

It seems that you have an old version of glibc. Please install glibc 2.0 (libc 6.0) and try again.

I can install SendXMS as a service (using WindowsNT), but the service doesn't start

Please check that the SYSTEM account has access rights to the directory where you have installed SendXMS and that this directory is on a local drive. If you don't want to give access rights to the SYSTEM account, you can run the service on any local account. For that go to Settings/Control Panel/Services, select the service SendXMS, select Schedule and change the settings for "Log On As:" from SystemAccount to This Account.

I use the command line parameter -I, but the message is not shown immediately

This feature is not supported by all protocols. Using UCP it is only supported with function 51 (PROTOCOL=UCP[51] in sendxms.pro). Not all phones are able to display messages immediately.

Using the graphical user interface (xmsgui) on Unix I'm not able to abort a send attempt

Check the file permissions for 'sendxms' and 'xmsgui'. If the s-Bit is set for sendxms and sendxms belongs to another user xmsgui is not allowed to kill the process.

Es kann keine Verbindung zur SMSC über ISDN gergestellt werden

Falls Sie ihre ISDN-Leitung nicht direkt von der Telekom gestellt bekommen kann es sein, daß Sie die Call-by-Call Vorwahl der Telekom (01033) angeben müssen um sich in die SMSC einwählen zu können.