This is an old revision of the document!
Maybe I'm coming late to the party, but I do have a 3G UMTS modem from Huawei – the E303C. It has a lot in common with other devices, though, like E173 or E220. It's worth mentioning that's the barebones version, so there's no HiLink non-sense. It comunicates through serial ports, not per via RNDIS (grosso modo, emulated ethernet). Works fine both on Linux or Windows and you don't really need to install the Huawei Partner thing. But I won't go into detail on that, now. Suffice to know that once it's exposing it's serial ports to the host, the system can comunicate with it as it were an old fashioned hardware (no WinModems here!) dialup modem (which it indeed is, sort of).
But there's a nifty feature to the Partner software: a dialer. That is: if you dongle came with unlocked voice function and the operator enabled it on it's Partner software's distribution. Mine came unlocked voice, but no calling function on the Partner software. Doesn't matter. I just used one from India, I think? Or was it Vodafone? I don't remember. But I got voice.
Okay, so you may want to use voice on Linux and without using the Partner software (whose Linux version seems to be crappy). Well, you're out of luck if you want an out of the box solution. But there's an way. You can pretty much do it using a couple of UNIX and AT (Hayes) commands.
I don't remember how to check for it, but there's a custom command for querying voice stuff which works on most 3G dongles:
AT^CVOICE?. Under normal circunstances, this command should give you audio format information. If it does not, either your 3G dongle doesn't support it at all or it's simply unlocked.
Unlocking it is a though proccess. And, the last time I checked, you had to pay some shaddy Indians to be able to do it using their software. I had to do it because I did some dumb stuff I won't go into detail here, but had something to do with firmware quid-pro-quos. So, please avoide messing with firmware unless you absuletly know what you are doing.
tl;dr: see the next sessions for practical usage
Well, there were, in fact, a way to use the voice function under Linux. But it was cumbersome. Asterisk had a module called “chan_dongle” which allowed those dongles to be used as trunk lines. If you just want to place a goddam call on your dongle, it's way to much work, I think. But it was the very existence of this module which proved to me it was possible to get the voice data without needing aditional crapware.
So, let me explain briefly how this voice stuff works in this kind of dongle: there's three serial ports (MODEM, DIAG and PCUI), and you talk to the modem via the MODEM port (generally is the first serial device, like /dev/ttyUSB0, but not always) or the PCUI port (which tends to be last one). The PCUI port isn't exactly useful because it outputs a lot of information which is only useful to the Partner Software