Data transfer between GSM devices without a base station - android

I am thinking about an application that will establish a mesh network between smartphones on Android and maybe iOS devices. It'd look like netsukuku between smartphones + Voice, Chat, Data, maybe Local network.
Is it possible by GSM? Any GSM architecture restrictions?
Is it possible to connect phones via GSM in android? and/or iOS?
Can I use Android libs to make it or I need direct access to the GSM module to do it??

There is no way to do this under normal conditions and may not be possible without flashing a modification directly to the underlying GSM radio - not something for the fain at heart. On iOS I am going to guess this is completely impossible.

First of all, there are tons of regulations related to wireless usage. In the US, the FCC takes care of that and each country has its sets of rules that luckily, have some common points. If you want to use a cellphone modem in its current frequency range, you have to modify it and it's not "legal". The frequency range it uses are "owned" by the carriers, they pay big bucks to use it. Second, your cell modem is meant to look for a cell tower and "hook-up" to it. It doesn't have what is necessary to do a mesh. This would require rewriting the firmware in the cell modem itself, and this is only if the chipset support mesh networking (I doubt it). Even after doing all that work, you would have to use available radio frequency band (there's not much) to do that and the cell phone modem antenna is probably not supporting it. So, for your mesh architecture to work, you would have to get some hardware work into it.
Here is an idea: you built a little dungle that would connect to your cell through Bluetooth. This dungle would in turn have a longer reach wireless radio in the ISM band which is license free (you still have to go through FCC... certification). But in the ISM band, the transmission power is also limited so, you mesh will still need to be devices not too far appart.
Simpler and cheaper solution: use the internet to connect your devices together. You can use a server in the cloud where all devices register and then can talk together.

Related

Mesh networking using cell phone radio

EDIT: So in summary, this is not really possible, because of the scope of the software used to communicate with the antennae is to low level. It would be amazing, if this software was accessible to developers, as it would enable us to make more cool stuff. Unfortunately it isn't
I've had this idea ghosting around my mind for a while, but I don't know if it's possible. Could one develop a mesh network where phones used their internal radios to communicate with each other directly instead of first connecting to a tower? The idea being, that given proper software, cellular networks would no longer be needed. Basically: Imagine you want to use whatsapp but you don't have a data plan and you're out & about so consequently don't have wifi either. Can phone A connect to phone B (provided phone B has an internet connection) and piggyback off it's wifi?

Get Wi-Fi protocol (802.11a/b/g/n) programmatically

Through WifiManager, my Android app can get a lot of details about Wi-Fi. However I fail to get protocol type like a/b/g/n. I have a client requirement to do that.
Does anyone know how to achieve that? (I don't have the option to use adb). It is to be done programmatically. I strongly believe that device and router have already negotiated protocol before they can connect. So that information is there with device. Question is, how do we get it?
You can partially deduce the protocol from the link speed
WifiManager.getConnectionInfo().getLinkSpeed()
By Wikipedia 802.11 protocols speed table you can tell if it is 802.11b, 802.11n or 802.11ag.
802.11n and 802.11ac full link speed tables
Link speeds of protocols 802.11a and 802.11g are the same, you can distinguish between them by the used frequency (5GHz or 2.4GHz) in the scan results.
Note that protocol can change during the connection, client and access point do negotiate protocols and speeds but they agree on a list and not on one specific speed.
I don't think there is a way to distinguish between 802.11n and 802.11ac in their overlapping speeds.
I don't believe this is possible to get in a clean manner. The protocols - a, b, g, n, etc - are actually human abstractions of the MAC and physical layer in networks. These are defined as their recognizable letters if they meet certain hardware specifications, both for the device and the network device.
After doing some digging, it seems that Windows phones are able to display this information. When digging into the manner of determining the protocol on Windows, I came across the desktop explanation as well as the Visual C++ implementation via enums. It seems that even the official Windows documentation relies on vendor-provided data and enumerated values, which would lead me to believe that they need to determine hardware specifications beyond what is likely exposed in the Android API.
If you want to determine the protocol yourself, you'll need to understand the link speed as well as the frequency, modulation, and bandwidth.
TL;DR
Likely not possible unless you are working with a rooted phone and can access the hardware specs directly.

Can I send a signal with a certain frequency and data rate using my android phone by changing in the kernel or by using GNU radio?

I want to transmit a certain data with a certain data rate and my USRP doesn't support this high rate so I'm thinking if I can by any way change my kernel ( 2.6.35.7) to make the mobile transmit signal, or are there any apps that can do this ?
plz help!!!!
Theoretically yes, practically, no. The problem is that the RF blocks of a mobile phone are not documented and there is no way you can modify the phone to transmit anything unless you know how to modify the RF (modem) block of the chip inside your phone.
As for GNU Radio, I don't think it is possible to run GR on a mobile phone (yet).
First of all, your phone isn't using the kernel you interact with to drive the radio. You can use an external, USB-attached (or other bus) radio interface, however connecting it to the rest of the system (unless you just want to use it in your own application) will be hard.
The cellular, wifi, bt and other radio interfaces have their own firmware, separate cpus, and usually involve heavy fines/jail for unauthorized modification (it's part of why your devices have "FCC ID" stickers and such - the firmware is tested to not make trouble for operation of other devices etc.).

Way(s) to detect nearby mobile devices using the Android SDK?

I'm contemplating the development of an Android app that detects all or most nearby mobile devices (iPhone, Android, etc) in the immediate neighborhood that are turned on. I don't need to interact with these devices, just detect them, and a requirement is that the detected devices can't need to have any special / unusual apps installed on them. The app only needs to work for typical U.S. devices and networks.
I've thought about a few ways to do this (somehow detecting bluetooth, wifi, or cellular transmissions / identifiers), but I'm looking for specific implementation methods for a way to detect a relatively large proportion of nearby devices. I'm not sure which of these methods is possible / feasible or how to put them into practice...
Perhaps using Bluetooth: Is there a way using the Android SDK to detect non-discoverable Bluetooth devices (not in discoverable mode)? The Nokia Developer site seems to suggest this is possible using Service Discovery Protocol (SDP), but I'm not sure if this is possible more generally in Android. 
Perhaps using cell tower mast switching simulation? Ok, this is almost certainly beyond the reach of Android, but this article suggests that there may be a way to "mimic cell mast switching process to trigger quiescent phones into transmitting. Phones respond with their ID and authentication signals...".
I think you should see this, it is a paper, and you cannot view it for free, but in the summary, it clearly states:
Concerns about Bluetooth device security have led the specification of the “non-discoverable” mode, which prevents devices from being listed during a Bluetooth device search process. However, a nondiscoverable Bluetooth device is visible to devices that know its address or can discover its address. This paper discusses the detection of non-discoverable Bluetooth devices using an enhanced brute force search attack. Our results indicate that the average time to attack a non-discoverable Bluetooth device using multiple search devices and condensed packet timing can be reduced to well under 24 hours.
But for an android application, you need the detection time to be well under a few seconds instead of less than 24 hours, so a practical solution may not yet be available.

Video-Calling Over WiFi without any intermediate server or 3rd party connection like Skype

I want to facilitate video-calling from the android device to another android device. My question is that can i connect the android WiFi device with the android WiFi device without any use of internet connection. I want to use it just like the Skype. is this possible or not? if it is possible then how can i implement it...can i get some code snippets as well???? Please give me link to download that app
First, your idea works completely different from Skype, which is completely dependent on a functional Internet connection for its core functionality.
Second, while you could create an ad-hoc WiFi network betweeen two Android devices, their range will be the limiting factor:
WiFi is intended as a short-range wireless medium. There's a reason nobody wanted the 2.4 GHz band (and therefore it is unlicensed): there's a significant noise and signal loss on these frequencies, noticeable even at short range.
Moreover, wireless equipment in mobile devices is engineered for power efficiency - which translates to lower broadcast power when compared to on-the-grid devices.
Also, the antennae in such devices are omnidirectional - this is rather useful for normal use, but again lowers your available broadcast power
Even if you had huge, high-quality directional external antennae connected to each device, pointing very precisely at each other (btw that also means each of them is stuck in one place; see e.g. this for a dish size calculator), you'd need to make some pretty drastic changes to their networking stack, as the latency inherent in long-distance comms will screw up TCP/IP pretty badly.
Even so, the setup would be very brittle, dependent even on the weather (water vapour absorbs significant amount of power in that part of the spectrum).

Categories

Resources