Resources for playing with my landline phone? - arduino

I have few projects ideas that involve plugging a computer or an arduino to my landline phone (or just before it). For example, I would like to grab the caller ID sent when someone calls, do a lookup on the web or in an address book, and display the associated name on a LED screen.
The problem is that I can't find any resources on the protocols used for transmitting this caller ID, etc. I may have misused my google skills, so could anyone give me some pointers ?
I am particularly interested in all the protocols evolving around landline phones (caller ID forwarding/blocking, sending SMS, starting/ending a call, etc.). It is my understanding that while the long distance part (from central to central) is numeric, the signal reaching the phone on the customer side is still analogic. Is it true ?

The majority of public telephone networks (PSTNs) have a digital core (switch to switch) and an analogue edge (from the edge switch to your phone at home).
Business and large campuses (Hotels, Hospitals, Colleges - any large organization on a single or closely located sites) often will have a local phone system and switch (PABX) which will speak digitally to the edge exchange and which, increasingly, may speak digitally to the desk phones also.
There are actually a number of different standards in use for sending the CLI over the analogue circuit to your home phone depending on where you are and who your operator is - see the following link as a good starting point, although it is old and the links appear broken):
http://www.ainslie.org.uk/callerid/cli_faq.htm#Q_6
This one may also be useful:
http://www.tech-faq.com/fsk.html

Related

Network Locking/Unlocking via IMEI

Hie There Everyone !!!
So this question is about cellphone companies and 3rd party companies being able to lock/unlock a cellphone to/from a particular network. My question is how do they do it especially/given that the mobile handset is located in a particular country ?? Also given that a phone is Network locked, what exactly is locked ?? Is it the firmware or it's software that basically prevents you from using another SIM Card ?? Is there any hardware available to unlock your mobile device on your own and at what cost ??
Thanks Very Much, I hope I made myself clear in this question.
Locking a phone on a particular network is up to recently a matter of sim locking the phone. This means the firmware does a test on startup is the inserted sim belongs to a specific operator. Most of the time there is an official procedure to unlock the phone you can ask to your operator if yous had been a subscriber "long enough". The ere are also unofficial procedures which can be applied if you have the right software you have to buy. In Africa it's a real business people do in the street.
Some spartphone vendors can also lock their phones is they have specific commercial agreements with the operator. They do it on their centralized servers. Unlocking in this case is tricky, or even impossible.

Wide Area Network for embedded systems without cellular or internet

I'm looking into how one would create a network of embedded systems. What I'd like to achieve is for a device (basically a chip with network capabilities) to directly send data to a server but not use the internet(tcp/ip) or cellular data(like GSM etc).
I don't have much expertise in this field. Most of the networking protocols I've seen like ZigBee are designed for a Local Area Networks. Wide Area Network can be achieved perhaps over mesh or hoping etc. But is there a known protocol for long range networking, say for sensors, assuming there aren't low power constraints?
I am guessing you want to avoid the internet and GSM, not because you have anything against the protocols but because you want your solution to work without having to rely these networks.
If so then you don't have to rule out TCP/IP as this can be used in private networks also.
From your description it sounds like the closest thing that would meet your needs would be a satellite based communications system. So long as you are not worried about price, power and to a certain extend size, then your sensors can communicate from anywhere using satellite links.
There are also HAP - High Altitude Platforms. These are essentially like low flying Satellites, or high flying planes/blimps, so don't have the same coverage but need less power for a given communication bandwidth. If you search for 'High Altitude Platform Networking' you should find plenty of examples such as the following which is an up to date summary of the technology at the time of writing:
http://www.scielo.br/scielo.php?script=sci_arttext&pid=S2175-91462016000300249
As mentioned above, many if not all of these systems will support IP based communication protocols on top of their lower layers. Unless you really have some issue with the protocols themselves, it seems sensible to use them as there is such a wealth of experience, tools etc associated with IP communications, and using them does not make you dependent on the wider 'Internet'.
Its also worth mentioning that a common pattern is to have local groups of sensors communicate with each other and or with a gateway and the gateway then communicate over the long link back to your server. This allows the individual device be smaller, cheaper, lower power etc. This may not match your requirements if you are not likey to have clusters of sensors, however.
If you search for satellite sensor networks you may find you get a lot of hits for the gateway case mentioned above. This article 'A Survey of Architectures and Scenarios in Satellite-Based Wireless Sensor Networks: System Design Aspects' looks to be a good overview which includes HAPs also and it is available to download form this site at the time of writing:
https://www.researchgate.net/publication/250003254_A_Survey_of_Architectures_and_Scenarios_in_Satellite-Based_Wireless_Sensor_Networks_System_Design_Aspects
I would look into LoRa which is designed with these requirements in mind.
You still need infrastructure for that (gateways, network servers), you could roll out your own or (in urbanized areas) use pre-existing one like TTN.
The choice of networking technologies depends on many factors, such as range, power constraints, bandwidth requirements and so on.
User Raber already pointed out that you could look into LoRa / LoRaWAN. Since nobody else mentioned it yet, my suggestion is to also have a look at SigFox technology, which is slightly different from LoRa in what it offers and their business model.

Why not use MAC addresses instead of Local IPs?

In similar questions, the question that has been answered is:
why do we need both MAC and IP addresses on the internet? They are
both addresses. Why can't one just be used to describe a device?
The answer is along the lines of:
The two protocols are not universal, not all devices use it. IP
provides a logical address and allows routing, MAC doesn't support routing, and more.
My new question is:
That's a nice answer as to why the internet as a whole needs both types of addresses, but why do we need Local IP addresses?
Locally, on the same network, no routing is involved, I'm simply sending to the computer next to me. Why can't I just send directly to his MAC address? And the router that connects our local network to the internet - why can't he just store a table of MAC addresses to keep track of what from the outside world goes where in the "local world"?
The existence of Local IP seems unnecessary.
So lets forget for a second that all modern OS's are primarily based on IP/IPv6 and your suggestion would completely break everything. Imagine this analogy:
An IP address is like a fully qualified postal address:
I. M. Ray
1024 Megabit Dr
Somecity, State 10101
Your MAC address is your physical house. The blue one 4 house from the corner, with the big oak tree.
When someone is sending you a letter conventionally, the mail is routed to your local post office based on the full address. We will compare this with routing of IP over the internet. The post office the mail was sent from could care less about your oak tree.
In the conventional method, the post man would organize his deliveries by street, and go house to house delivering the mail. This is similar to ARP table, we have organized the houses into an easy to find and navigate index.
In your proposed method, as soon as the mail arrives at the post office, they replace the envelope with your full address to one with a description of your house on it. It is now the post mans job to remember where the Blue house with the oak tree is.
So, while your thoughts are on the right track, they are just not practical. Once you are on the same layer 2 domain (local), then you don't necessarily need routing and could in theory use just physical addresses.
I am sorry if this is a pretty far out answer. I've been reading your other questions on the topic, and it seems as though you are trying to wrap your head around this subject, and this was my best attempt at breaking it down logically. The whole idea is pretty tricky to understand at first (we've all been there), but once you figure out the parts and the role they play in the grand scheme, the more it starts to make sense.
Please feel free to ask if you have any questions, as my primary intention of posting this is to actually help you out.

How to implement a "fax protocol"?

I want to write a program that programmatically sends faxes. Or receives faxes. But not with a modem. I guess I'm trying to write a fax simulator. Everything that the hardware does, I want to do using software.
There are a billion SO questions on the topic, but they either suggest an online service to use or they point me to a library, which talks to my computer's modem. So here are my specific questions:
When I send a fax, I can hear the warbling on the telephone line. This tells me that my fax machine is generating tones that are consumable by the recipient's. What is that protocol? Is there an RFC which specifies how a "pixel" is converted to a "frequency"? Do the machines communicate back and forth, or is it one-way?
If we can agree that a fax machine translates sound frequencies to images, then one ought to be able to write a program which takes an MP3 of a fax transmission and outputs a graphic. What do I need to know in order to do this?
Are these questions based on any flawed assumptions? Where should I start so that I can accomplish goal #2 from above?
Actually in modem a chip called "DSP => Digital Signal Processing" is responsible to convert audio signals into digital DATA. and same can be done with a software library. there is already an open source DSP library called SpanDSP developed by "Steve Underwood" http://www.soft-switch.org/.
You can build your own application while using SpanDSP library, but it is wise to use some existing implementation of SpanDSP. Currently SpanDSP is implemented in open source FreeSwitch, CallWeaver and Asterisk PBX systems.
But if you only want to send and receive faxes without bothering low level development then try out ICTFAX Open Source FAX system.
The fax specifications you would need are ITU T4 and T30, which costs lots of money and are almost wilfully difficult to understand, and they'll refer you to the various modem standard for how the actual 'warbling' is done.
If you're hoping for something free/easy like an RFC, then you should probably give up now.
If you did want to decode an audio file, you would need to view that as two completely separate tasks - firstly decoding the tones to a data stream (build several soft-modems, for the various ways fax machines can agree to communicate), and then secondly decoding the data-stream to pixels (write a fax machine's software).
You are not fundamentally wrong that a fax machine converts light and dark into sound and then back again, or that it's possible to eavesdrop on a conversation between two fax machines and recover the image (either in real-time or via some kind of capture file, though I'm not sure that MP3 would work), but I suspect you've hugely, hugely underestimated the amount of work involved.
http://en.wikipedia.org/wiki/Fax
has plenty of background.
The ITU protocols are very involved, IIRC the exact specifications are not free.

GSM Modems, PCs, SMS and Telephone Calls

What all would be the requirements for the following scenario:
A GSM modem connected to a PC running
a web based (ASP.NET) application. In
the application the user selects a
phone number from a list of phone nos.
When he clicks on a button named the
PC should call the selected phone
number. When the person on the phone
responds he should be able to have a
conversation with the PC user.
Similarly there should be a facility
to send SMS.
Now I don't want any code listings. I just need to know what would be the requirements besides asp.net, database for storing phone numbers, and GSM modem.
Any help in terms of reference websites would be highly appreciated.
I'll pick some points of your very broad question and answer them. Note that there are other points where others may be of more help...
First, a GSM modem is probably not the way you'd want to go as they usually don't allow for concurrency. So unless you just want one user at the time to use your service, you'd probably need another solution.
Also, think about cost issues - at least where I live, providing such a service would be prohibitively expensive using a normal GSM modem and a normal contract - but this is drifting into off-topicness.
The next issue will be to get voice data from the client to the server (which will relay it to the phone system - using whatever practical means). Pure browser based functionality won't be of much help, so you would absolutely need something plugin based.
Flash may work, seeing they provide access to the microphone, but please don't ask me about the details. I've never done anything like this.
Also, privacy would be a concern. While GSM data is encrypted, the path between client and server is not per default. And even if you use SSL, you'd have to convince your users trusting you that you don't record all the conversations going on, but this too is more of a political than a coding issue.
Finally, you'd have to think of bandwidth. Voice uses a lot of it and also it requires low latency. If you use a SIP trunk, you'll need the bandwidth twice per user: Once from and to your client and once from and to the SIP trunk. Calculate with 10-64 KBit/s per user and channel.
A feasible architecture would probably be to use a SIP trunk (they optimize on using VoIP as much as possible and thus can provide much lower rates than a GSM provider generally does. Also, they allow for concurrency), an Asterisk box (http://www.asterisk.org - a free PBX), some custom made flash client and a custom made SIP client on the server.
All in all, this is quite the undertaking :-)
You'll need a GSM library. There appear to be a few of these.
e.g. http://www.wirelessdevstudio.com/eng/
Have a look at the Ekiga project at http://www.Ekiga.org.
This provides audio and or video chat between users using the standard SIP (Session Initiation Protocol) over the Internet. Like most SIP clients, it can also be used to make calls to and receive calls from the telephone network, but this requires an account with a commercial service provider (there are many, and fees are quite reasonable compared to normal phone line accounts).
Ekiga uses the open source OPAL library to implement SIP communications (OPAL has support for several VoIP and video over IP standards - see www.opalvoip.org for more info).

Resources