Network providers in USA that can work on SIM900 or Ai thinker A9g GSM modules - gsm

I am working on a sensing device that is installed remotely, I want to send the data to my mobile phone via SMS. The GSM module I am using inside my device is Ai thinker a9g. I have tried a couple of sim cards but they are not supported. I wanted to know I there is a service provider that supports sms/ text message service on aforementioned gsm module?

I had tried and it works. Make sure your sim card support GSM.
Also you have to change the code to make it work.
If you check the code you going to have something like this:
#define PDP_CONTEXT_APN "cmnet"
#define PDP_CONTEXT_USERNAME ""
#define PDP_CONTEXT_PASSWD ""
Network_PDP_Context_t context = {
.apn = PDP_CONTEXT_APN,
.userName = PDP_CONTEXT_USERNAME,
.userPasswd = PDP_CONTEXT_PASSWD
};
You have to change the APN by the apn of your provider (with a quick google search you going to find it)
I am going to give you some:
MetroPCS: fast.metropcs.com
Ting: wholesale (This is the one I'm using)
Sprint: cinet.spcs
Tmobile: fast.t-mobile.com
Username and Password are empty.

Related

Persona U are U 4500 Web API

I am new to biometrics. I bought a new Persona U are U 4500 Device and SDK from a vendor. The SDK has some samples (as expected). All of the samples run smoothly except the WebSample. it do not detects my device in addition it gives an error in the console.
Can anyone please help me how to fix this issue and guide me as why am i facing this problem? is it something related to my wss://localhost?
Update
By further diving into the program i found the specified url https://127.0.0.1:52181/get_connection in websdk.client.bundle.min.js when i opened the link it says
{
"code": -2147024894,
"message": "The system cannot find the file specified."
}
Am i missing some file?
I don't have it in front of me now, because I switched back to the U.are.U 2.2.3 SDK, which does not have this feature.
But it sounds like you possibly have not installed the Digital Persona Lite client component. This runs a separate WebSocket service on port 9001 (IIRC) through which the JavaScript client then communicates.
It is described here: https://hidglobal.github.io/digitalpersona-devices/tutorial.html
After installation, you will need to restart.
The call to https://127.0.0.1:52181/get_connection should then respond with details of the WebSocket service, to which the JavaScript client will connect.
NOTE: The WebSkd library requires DigitalPersona Agent running on a
client machine. This agent provides a secure communication channel
between a browser and a fingerprint or card device driver. The
DigitalPersona Agent is a part of a HID DigitalPersona Workstation. It
can be also installed with a DigitalPersona Lite Client. If you expect
your users do not use HID DigitalPersona Workstation, you may need to
provide your users with a link to the Lite Client download, which you
should show on a reader communication error:
A link is provided there to download the Lite client from here: https://www.crossmatch.com/AltusFiles/AltusLite/digitalPersonaClient.Setup64.exe
you just add a script call of the following code "crossorigin = '' ". "crossorigin=''". It will look like this:
<script src="scripts/websdk.client.bundle.min.js" crossorigin="*"></script>
<script src="scripts/fingerprint.sdk.min.js" crossorigin="*"></script>

iOS 12 and above, fetch Wifi SSID to which iPhone is connected

I have gone through the link which explains getting SSID without private library. This works for devices below iOS 12.0.1. From iOS 12.0.1 onwards, the same library is not beneficial anymore. My code snippet is:
CFArrayRef myArray = CNCopySupportedInterfaces();
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
NSString *networkName = CFDictionaryGetValue(myDict, kCNNetworkInfoKeySSID);
These lines crash in Xcode 10 and above. myDict is returned nil. Is the library changed? Any other way to achieve this task?
Additional settings are reqiured in iOS12 for getting Wifi SSID.
Summary is that Apple qoutes:
To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.
Thus, Enable Access WiFi Information for the Bundle ID in developer account. Reenable the associated provisional profiles.
In Xcode, under Targets -> Capabilities -> Access WiFi Information -> Enable it to ON.

Create wifi tethering Hotspot in Android Marshmallow, without intervention?

In Android M, I used code in How to create wifi tethering Hotspot in Android Marshmallow? to create hotspot, but it is not working.
I get error.:
java.lang.SecurityException: android.tutorial.hotspotcreation was not granted either of these permissions: android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS.
If I use that hotspot code.
The recommended way, is to use an intent:
startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));
Is there a way to create hotspot via code, without user-intervention?
As your error message clearly shows, you will have to add two permissions to your Manifest (or ask for them interactively on 6.0+):
CHANGE_NETWORK_STATE
WRITE_SETTINGS

setting static IP for wifi connection in QT

I am trying to create a QT based application that scan and connect WiFi networks. I am using this example as a reference code.
Is it possible to assign static IP for the WiFi connection using QNetworkConfiguration or any related class ?
How to authenticate the networks that are password protected ?
thanks in advance......
I have created a net work session using the below code set..
void BearerMonitor::createNewSessionFromQml(QString ssid)
{
QList<QNetworkConfiguration> allConfigurations = manager.allConfigurations();
while (!allConfigurations.isEmpty()) {
QNetworkConfiguration config = allConfigurations.takeFirst();
if(config.name()==ssid)
createSessionFor(config);
}
}
SessionWidget::SessionWidget(const QNetworkConfiguration &config, QObject *parent):QObject(parent)
{
session = new QNetworkSession(config, this);
session->open();
}
No you can't. At least not with just Qt APIs.
Please read this and in particular this. QNetworkConfiguration is just a facility to manage network configurations. Editing such configurations is demanded to native code / OS interactions. From the second link:
Note that the QNetworkConfiguration object only provides limited information about the configuration details themselves. It's main purpose is to act as a configuration identifier through which link layer connections can be created, destroyed and monitored.
Even the "start/stop network interfaces" claim is not entirely true since such a feature is available only in certain OSs (not the mobile ones). See the "Platform capabilities" section of the second link for more details about that.
The same reasoning applies to the password question. Once a network is registed in the OS with the corresponding password (because of native code or the user physically registering it) a new configuration is available to the NetworkConfigurationManager, granted that the list of configurations is updated via updateConfigurations(). The new configuration contains the password but you can't edit it from Qt APIs.
Native code is the only solution, as said. Still, Apple does not want you to mess up with WiFi programatically since private APIs for that cannot be used in iOS > 5.1 (the oldest version supported by Qt as for Qt 5.4).

Issue related to APN names

I am using simcom900 modem,I am successfully able to establish GPRS connection and send data from my module to server.I am using 2g Airtel SIM and I have given APN name as "airtelgprs.com".I have also tried by giving different APN names which are not related to airtel network then also I could establish connection and transfer data to server.
Please let me know how is this possible?
With the SIM unlocked, try entering
AT+CGDCONT?
Now you should see all the stored contexts, something like this:
+CGDCONT: 1,”IP”,”airtelgprs.com”,”0.0.0.0″,0,0
+CGDCONT: 2,”IP”,”other apn”,”0.0.0.0″,0,0
+CGDCONT: 3,”IP”,”other apn2”,”0.0.0.0″,0,0
Now try to activate each context in turn
AT+CGACT=1,1 (first parameter activates the context, 2nd parameter defines which context is activated)
You should get "OK" if the activation was successful.
Now deactivate context number 1 with
AT+CGACT=0,1
OK
Now, try to activate one of the wrong apns:
AT+CGACT=1,2
You should get something like:
+CME ERROR: no network service
(switch on error reporting with AT+CME)
Now delete the stored contexts with the correct APN, by setting them to empty:
AT+CGDCONT=1,"","","",0
OK
Check that they are gone:
AT+CGDCONT?
(get only contexts with wrong APNs)
Now try your AT command again, with a wrong APN:
AT+CSTT="some wrong apn" etc.
You should hopefully see that it doesn't connect. If it doesn't connect, maybe AT+CSTT always connects on the saved context number 1, even if you give it a different APN. It should be easy to test that theory by playing with AT+CGDCONT and the stored contexts.
AT+CGDCONT and AT+CGACT are standard AT commands, you can find the full reference in 3GPP TS 27.007.
Most of the operators are using special features (usually called APN Redirection) on their networks to fix wrong APN names to some default APN name. E.g. when you are trying to establish PDP using APN name "iternet" it will be automatically redirected to APN name "internet". So, it seems that you have faced with that behaviour.
APN redirection is active for your provider where your APN will be corrected automatically to some default APN or selecting the one you have subscribed based on your subscription profile in HLR.
You face this issue, or rather lack of an issue, most probably, because Airtel doesn't check for APN at all while connecting via GPRS.
I have tested this with different SIM cards, and different SIM plans.
Operators that strongly check for APN-
1. Idea
2. MTNL
3. Vodafone
Note: All the operator info mentioned here is stricly for the region on India. I don't have experience of other regions.

Resources