Yes it did send the DTMF tones faster. The script should probably have some pauses between the Start and Stop messages but I guess the shell interpreter is slow enough to do the job. Apparently 40ms per tone and 40ms between tones is sufficient. That's what I did when I realised that I could type in the phone number on the keypad faster than VICaR was doing it. But when I modified your code to do the Start/Stop thing no tones were produced. My hunch is the dbus parameters were getting garbled, since the Start method wants a byte argument and it is likely getting padded to 2 or 4 bytes. But I'm no expert on C++ and don't have the time to become one.