LTE project gets a status bar!

In my continuing effort to learn about programming, cellular service, and Arduino, I’ve made a couple of great developments on my LTE project. Essentially, I’m turning these parts into a texting/gps device. I want to say a phone, but since it uses LTE only, it can’t actually make a phone call. So it is a “smart device” rather than a “smart phone”.

Of course, any useful device needs to have a status bar. And that is what I have done so far. The Nokia 5110 display, at the current font, supports 5 lines of text. So, I decided the top line will always be the status bar. Just like your smart phone, this device uses a status bar to tell you the “status” of everything you really, really need to know in one glance.

The first digits displayed are the battery percentage. If you don’t know how much time you have left on the device before it dies, it can be a little hard to use. Here you can see the magic behind the curtain:

// Get the battery percentage:
uint16_t vbat;
if (! fona.getBattPercent(&vbat)) {
Serial.println(F(“Failed to read Batt”));
lcd.print(“**% “);
} else {
Serial.print(F(“VPct = “)); Serial.print(vbat); Serial.println(F(“%”));
lcd.print(vbat); lcd.print(“% “);
}

Next up is the GPS indicator. Note that this doesn’t tell you if you have a lock, but does tell you if the battery draining GPS is turned on or off (GPS for on, — for off). Fortunately, the fona library includes a GPS status checking function, so we just call it, like so:

// Get the GPS status:
int statGPS = fona.GPSstatus(); Serial.print(F(“GPS status = “)); Serial.println(statGPS);
if (statGPS == 1) {lcd.print(“GPS “);} else {lcd.print(“— “);}

After that, we have the network status indicator. I’ll delve into that a bit more. It looks like the traditional multi-bar display, but unlike traditional ones on your smart phone, this actually is just full bars, or not. As you can see, you can get different letters for different status, or just the home made bar indicator glyph for roaming or home connections.

// Get the network status:
uint8_t n = fona.getNetworkStatus();
Serial.print(F(“Network status “));
Serial.print(n);
Serial.print(F(“: “));
if (n == 0) {Serial.println(F(“Not registered”)); lcd.print(“X”);}
if (n == 1) {Serial.println(F(“Registered (home)”)); lcd.write(0);}
if (n == 2) {Serial.println(F(“Not registered (searching)”)); lcd.print(“S”);}
if (n == 3) {Serial.println(F(“Denied”)); lcd.print(“D”);}
if (n == 4) {Serial.println(F(“Unknown”)); lcd.print(“?”);}
if (n == 5) {Serial.println(F(“Registered roaming”)); lcd.write(0);}
lcd.print(” “);

Finally, there is a number that tells you how many text messages you currently have.

// Get the number of SMS messages:
int8_t smsnum = fona.getNumSMS();
if (smsnum < 0) {
Serial.println(F(“Could not read # SMS”));
lcd.print(“-0- “);
} else {
Serial.print(smsnum); Serial.println(F(” SMS’s on SIM card!”));
lcd.print(smsnum);
}

You are welcome to check out the whole commit, but this is the gist of how the status bar works. Currently, the sketch takes up 78% of the Arduino’s memory. I think the direction I am going with this is trying to make a beginning to end, build at home smart device that allows you to at lease navigate by GPS, and send/receive text messages.

If wishes were fishes, and moose’s excuses, I guess we would all have full freezers. With that said, if I am able, I wish I could work in a couple other simple tasks as well, such as a way to play a simple game, perhaps check an email, or maybe a very rudimentary e-link style web browser. But I think that might be a whole lot more than I can realistically accomplish with so little memory on the device. We’ll see though!

Linux – keep it simple.

Advertisements

Arduino LTE Botletics shield and a Nokia 5110 display!

image2

Today was a lot of fun, and I mean a lot! I was able to connect not only the Botletics LTE shield, but also the Nokia 5110 screen to the Arduino, AT THE SAME TIME! I know, for the rest of the Arduino enthusiasts out there, this may seem like child’s play, but it was a big deal for me.

First, I was using the Botletics modified fona library, and with the soldered board pins, it can only connect to the Arduino one way. The problem was that I was also using the PCD8544 library to control the Nokia 5110 display, but some of the pins needed were the same ones for both devices. That certainly wouldn’t do. So, I edited the PCD8544.h file as follows:

PCD8544(uint8_t sclk = 3, // clock (display pin 2)
uint8_t sdin = 4, // data-in (display pin 3)
uint8_t dc = 5, // data select (display pin 4)
uint8_t reset = 12, // reset (display pin 8)
uint8_t sce = 13); // enable (display pin 5)

Changing these pin outs allowed me to control it with the remaining pins on the board. Now I can have both the display and the LTE shield at the same time! Essentially, the old PCD8544 library had used pins 3,4,5,6, and 7, for simplicity. I however couldn’t use 6 and 7, as those were taken by the LTE shield. So, I swapped them in the header file to point to pins 12 and 13, since they were not being used.

The only problem I ran into, though, was space. It takes a lot of space for the fona library to run the LTE shield. Originally, I was going to use the U8 library, but using those two together actually took 109% of the storage space on the Arduino Uno. I tried to trim down the portions of code for the fona side, but couldn’t get everything small enough. Fortunately, the PCD8544 library was much, much smaller, and I found that it even has a simpler interface for text only, which is mostly what I want to use the screen for.

With those two libraries pared up, I added some lines to my LTE demo sketch to allow me to display the battery information on the Nokia 5110 screen. All told the sketch uses 26470 bytes (82%) of the program storage space, the maximum is 32256 bytes. It worked great, looked good, and still leaves room for more programming.

You can check out the full commit, of course, but here is the portion about the screen:

case ‘b’: {
// read the battery voltage and percentage
uint16_t vbat;
if (! fona.getBattVoltage(&vbat)) {
Serial.println(F(“Failed to read Batt”));
} else {
lcd.setCursor(0, 0);
lcd.print(“Battery Status”);
Serial.print(F(“VBat = “)); Serial.print(vbat); Serial.println(F(” mV”));
lcd.setCursor(0, 1); lcd.print(“VBat = “); lcd.print(vbat); lcd.print(” mV”);
}

if (! fona.getBattPercent(&vbat)) {
Serial.println(F(“Failed to read Batt”));
} else {
Serial.print(F(“VPct = “)); Serial.print(vbat); Serial.println(F(“%”));
lcd.setCursor(0, 2); lcd.print(“VPct = “); lcd.print(vbat); lcd.print(“%”);
}

break;
}

Really simple commands to set up the cursor, and then just lcd.print to display information. I really like this simple screen library for text. It doesn’t handle graphics too well, though, which is what the U8 library excelled at.

So I guess now I need to work out some sort of menu system, as well as some sort of buttons if I want to turn this thing into a portable texting/gps/data interface device.

Linux – keep it simple.

Testing other SIM cards with the Arduino LTE shield from Botletics

IMG_20190423_084454

In the continuing process of testing out various aspects of using the Botletics LTE Arduino shield, I’ve decided to do a quick test with a few other SIM cards that I have available. I tested two other options, my Straight Talk SIM card, and a Freedom Pop SIM card. I was particularly interested in the Freedom Pop card, since that would allow me to have a free option for my board.

The first thing I did was add the following lines to my sketch, to handle the APN’s:

//fona.setNetworkSettings(F(“your APN”), F(“your username”), F(“your password”));
//fona.setNetworkSettings(F(“m2m.com.attz”)); // For AT&T IoT SIM card
//fona.setNetworkSettings(F(“telstra.internet”)); // For Telstra (Australia) SIM card – CAT-M1 (Band 28)
fona.setNetworkSettings(F(“hologram”)); // For Hologram SIM card
// WJH fona.setNetworkSettings(F(“fp.com.attz”)); // For Freedom Pop SIM card – Sort of works. Connects, but you need their app to text/call/sms/web/etc.
// WJH fona.setNetworkSettings(F(“tfdata”)); // For Straight Talk SIM card – sort of works. Connects and sends/receives SMS, but no web data.

That way, I just un-comment whichever option I need, and flash that to the board. Note that there are other options that I think you can pass for APN controls, but these three options (APN, user name, password) are the only ones this sketch accepts.

Here was the results of my test. Starting with Freedom Pop:

FONA> C
—> AT+CCID
<— ***************
SIM CCID = ***************
FONA> 1
—> AT+CPSI?
<— +CPSI: LTE CAT-M1,Online,310-410,0×9308,125708560,61,EUTRAN-BAND12,5110,3,3,-16,-98,-65,10
—> AT+COPS?
<— +COPS: 0,0,”AT&T”,7

OK FONA>
n
—> AT+CGREG?
<— +CGREG: 0,1
Network status 1: Registered (home)
FONA> i
—> AT+CSQ
<— +CSQ: 24,99
RSSI = 24: -66 dBm
FONA> R
—> AT+CMGF=1
<— OK
—> AT+CPMS?
<— +CPMS: “SM”,0,10,”SM”,0,10,”SM”,0,10
FONA> s
Send to #***************
Type out one-line message (140 char): test FP
—> AT+CMGF=1
<— OK
—> AT+CMGS=”19073714586″
<— >
> test FP
^Z
Sent!
FONA> R
—> AT+CMGF=1
<— OK
—> AT+CPMS?
<— +CPMS: “SM”,0,10,”SM”,0,10,”SM”,0,10
FONA> w
URL to read (e.g. dweet.io/get/latest/dweet/for/sim7500test123):
http://www.google.com
****
—> AT+HTTPTERM
<— OK
—> AT+HTTPINIT
<— OK
—> AT+HTTPPARA=”CID”
<— OK
—> AT+HTTPPARA=”UA”
<— OK
—> AT+HTTPPARA=”URL”
<— OK
—> AT+HTTPACTION=0
<— OK
Status: 601
Len: 0
—> AT+HTTPREAD
<— OK
Failed!
FONA>

And Straight Talk:

FONA> n
—> AT+CGREG?
<— +CGREG: 0,1
Network status 1: Registered (home)
FONA> 1
—> AT+CPSI?
<— +CPSI: LTE CAT-M1,Online,310-410,0×9308,125708560,61,EUTRAN-BAND12,5110,3,3,-18,-98,-64,8
—> AT+COPS?
<— +COPS: 0,0,”HOME”,7

OK FONA>
w
URL to read (e.g. dweet.io/get/latest/dweet/for/sim7500test123):
http://www.google.com
****
—> AT+HTTPTERM
<— ERROR
—> AT+HTTPINIT
<— OK
—> AT+HTTPPARA=”CID”
<— OK
—> AT+HTTPPARA=”UA”
<— OK
—> AT+HTTPPARA=”URL”
<— OK
—> AT+HTTPACTION=0
<— OK
Status: 601
Len: 0
—> AT+HTTPREAD
<— OK
Failed!
FONA> s
Send to #***************
Type out one-line message (140 char): test 2 st
—> AT+CMGF=1
<— OK
—> AT+CMGS=”***************”
<— >
> test 2 st
^Z
Sent!
FONA>
+CMTI: “SM”,1
R
—> AT+CMGF=1
<— OK
—> AT+CPMS?
<— +CPMS: “SM”,2,30,”SM”,2,30,”SM”,2,30

Reading SMS #1
—> AT+CMGF=1
<— OK
—> AT+CSDH=1
<— OK
AT+CMGR=1
+CMGR: “REC UNREAD”,”+***************”,,”19/04/29,10:42:01-32″,145,4,0,0,”+12085978931″,145,13
test 2 st
***** SMS #1 (13) bytes *****
test 2 st
*****

Reading SMS #2
—> AT+CMGF=1
<— OK
—> AT+CSDH=1
<— OK
AT+CMGR=2
OK
Failed!
FONA>

What is more important is what all that garble means. Essentially, it boils down to this:

  • Freedom Pop connects instantly to the AT&T network. However, you can’t read data, and you can’t send or receive text messages.
  • Straight Talk connects instantly to the AT&T network. It does send and receive text messages, but it cannot use data. So, there is no way to support web interface or tunneling.

So, without further breaking it down, and just using the sketches as is, you can connect with both FP and ST, but only ST can send/receive text messages, and no data, so neither option seems to really work out of the box. If you’ve tried other options, be sure to let me know the results.

Linux – keep it simple.

Texting trouble with the LTE shield!

sim7000a

Next on my bucket list for things to test out with the Botletics LTE Shield was text messaging, or SMS. According to the demo, it was supposed to be really easy and straight forward, but it wasn’t.

First, I used the Hologram Dashboard to send an SMS message to the device. It “showed up” but I couldn’t read it:

FONA> R
—> AT+CMGF=1
<— OK
—> AT+CPMS?
<— +CPMS: “SM”,1,10,”SM”,1,10,”SM”,1,10

Reading SMS #1
—> AT+CMGF=1
<— OK
—> AT+CSDH=1
<— OK
AT+CMGR=1
OK
Failed!
FONA>

Then I tried sending one from the device:

FONA> s
Send to #<MYPHONENUMBER>
Type out one-line message (140 char): testing
—> AT+CMGF=1
<— OK
—> AT+CMGS=”<MYPHONENUMBER>”
<— >
> testing
^Z

Failed!
FONA>

And it wouldn’t send one either. I tried several variations of this for about an hour, and just wound up frustrated. Later, I took a look through prior issues, and I found another user who had the same problem. Turns out, in their situation, they originally connected to Verizon, and then couldn’t send or receive. Then they connected to AT&T, and they could send and receive. So, I took a look, and sure enough, I was connected to a Verizon network. I reset my board, and tried connecting again. This time (by no work of my own) it connected to an AT&T network, and I too could send and receive SMS messages! Check it out:

  • Sending – I received it on my phone in seconds!

FONA> s
Send to #<MYPHONENUMBER>
Type out one-line message (140 char): testing
—> AT+CMGF=1
<— OK
—> AT+CMGS=<MYPHONENUMBER>
<— >
> testing
^Z
Sent!
FONA>

  • Receiving – I sent the reply of “Cool!” from my phone.

FONA> r
Read #1
Reading SMS #1
—> AT+CMGF=1
<— OK
—> AT+CSDH=1
<— OK
AT+CMGR=1
+CMGR: “REC READ”,”+<MYPHONENUMBER>”,,”19/04/25,21:39:28+00″,145,4,0,3,”+19703769316″,145,5
FROM: +<MYPHONENUMBER>
—> AT+CMGF=1
<— OK
—> AT+CSDH=1
<— OK
AT+CMGR=1
+CMGR: “REC READ”,”+<MYPHONENUMBER>”,,”19/04/25,21:39:28+00″,145,4,0,3,”+19703769316″,145,5
Cool!
***** SMS #1 (5) bytes *****
Cool!
*****
FONA>

So, if you too are trying to follow the tutorial for the LTE demo using the Botletics SIM7000A shield, be sure you are hooked up to AT&T. Also, if you were hooked up to Verizon, be sure you unplug the Arduino, and the power supply/battery of the board. Otherwise, the modem might still be on!

Linux – keep it simple.

LTE shield for Arduino: Web Page Download!

IMG_20190423_084454

First up on my list of learning about this Botletics LTE shield was how to pull data. Fortunately for me, the LTE demo sketch included a method for downloading something from the internet. It works like this:

// The code below was written by Adafruit and only works on some modules
case ‘w’: {
// read website URL
uint16_t statuscode;
int16_t length;
char url[80];
flushSerial();
Serial.println(F(“URL to read (e.g. dweet.io/get/latest/dweet/for/sim7500test123):”));
Serial.print(F(“http://&#8221;)); readline(url, 79);
Serial.println(url);
Serial.println(F(“****”));
if (!fona.HTTP_GET_start(url, &statuscode, (uint16_t *)&length)) {
Serial.println(“Failed!”);
break;
}
while (length > 0) {
while (fona.available()) {
char c = fona.read();

// Serial.write is too slow, we’ll write directly to Serial register!
#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168__)
loop_until_bit_is_set(UCSR0A, UDRE0); /* Wait until data register empty. */
UDR0 = c;
#else
Serial.write(c);
#endif
length–;
if (! length) break;
}
}
Serial.println(F(“\n****”));
fona.HTTP_GET_end();
break;
}

As the code states, it was originally written by Adafruit, and some portions of this code (the Adafruit Fona library) were updated by Timothy Woo of Botletics) and it allows you to look up a URL and download it. So, I tested Google. It downloaded it like so:

googleWebsite

And I copied/pasted it into a text file, and saved it as html, which opened in a browser, like this:

googletest

So, that works. Granted, using this method was extremely slow. I am using a serial monitor connection over USB at a 9600 baud rate, which really took a while to catch all of the data. You could literally watch the characters being written on the screen. However, I think the modem is much faster, just my interface to it is not as quick. I’ll have to play with it some more, but it was nice to be able to download a web page at least!

Linux – keep it simple.

Trial run of SIM 7000A LTE and GPS shield for Arduino

I wanted to start playing around with cellular devices and using them with the Arduino. So, I bought a Botletics SIM7000 LTE CAT-M1 NB-IoT Cellular + GPS + Antenna Shield Kit for Arduino (SIM7000A)  that works in my locale. There are different modules, SIM7000 A,C,E, etc. that work in different places, so I picked up this one which works with AT&T as well as Verizon LTE bands in my area.

So far, I’m just getting started, and I haven’t done much yet. You can head over to the wiki to see the available open source software and examples are available. I love Open Source Hardware (OSHW)! It is really nice buying a piece of equipment and seeing all of the available diagrams, schematics, software, etc., all laid out for you to use.

In any event, I’m just getting started with this, and so far all I’ve done is register my new Hologram.io sim card, and set it up with an LTE demo sketch. Essentially, the demo sketch allows you to connect over USB with the Arduino serial monitor and use a text based menu interface to play around with the modem, without having to know all of the AT commands.

Here’s a screenshot of my Hologram dashboard:

dashboard

Of course there is more information on the upper parts of the page, but I felt it was probably wise not to include my IEMI and other information on this shot. The dashboard is really intuitive. As for Hologram.io itself, so far so good. When I signed up they sent me a free card in the mail, as well as gave me 1 MB of free data a month to play with. Sending text messages to the device is free, but sending a text from the device costs 19 cents each. Overall, the monthly charge is $1.50/month to keep the card active. I think it is 40 cents for each additional MB of data I use.

The price seems a bit much for each SMS sent, but it is nice to allow me to play with this without having to get a $30+/month sim card for another carrier. I was going to try some of my other sims in it from my other phones, but you do need a phone sim that specifically does CAT-M1, which supposedly not all do.

One item of note is that the modem will not work without a battery while plugged into the Arduino. It turns out that the Arduino can’t supply enough juice during some operations that cause it to pull a little extra juice. These spikes are sporadic, and while the battery is plugged in, the battery is charged by the board, so my battery level keeps going up while plugged in.

The interesting thing about the battery is that I couldn’t get any place to ship me a battery in the mail to Alaska. Fortunately, I have several dead Android phones laying around and I pulled a 3.7v, 1400mAH battery out of one and was able to solder the wires to the terminals and hook it up that way. Check out the pictures if you want to see my handy work.

I’ll let you know as I try out a few of the features what I can come up with. I’m hoping to build some sort of rudimentary texting/web phone, and grow in some lower level cellular/gps knowledge. As always, you can follow along with my sketches on my GitLab!

Linux – keep it simple.

Mini to Nano: Cutting a Sim Card

The other day, a friend asked me about what phone I recommend that they get. They had some unique needs, and I recommended a phone for them. One thing that I didn’t consider was that the new phone used a nano sim card slot, and their old phone used a micro sim card slot.

Fortunately, this wasn’t really a problem for me, as I have cut down sim cards before. It always causes the person I’m helping to raise an eyebrow, though, and sometimes it can be difficult to get them to accept that it is okay for them to hand over the sim card to me and my scissors. I think that they were particularly doubtful, since their new phone came with specific instructions and warnings against cutting down a card to fit.

However, with a little calm reassurance, I convinced them to let me cut down their sim card. I used this template:

https://www.appletips.nl/wp-content/uploads/downloads/2012/09/nanosim.pdf

gsmrestart

WARNING: cutting your sim card could cause it to never work again, and at the least, it will not be the bigger size that it was before, and certainly can’t go back into the phone it came out of. Do this at your own risk!

One thing that card cutters often forget is the thickness of the card. On the above pdf file, they mention this as a foot note:

The difference in thickness between NanoSIMs and previous SIM cards (90µm) corresponds to the thickness of a human hair and should therefore not make any difference in practice. Nevertheless you may slightly grind the plastic side of your SIM card. Never grind the chip side!

I typically just sand the back plastic side for a few seconds with a 200 grit sand paper, and I have always had a good fit. So, if you are willing to accept the risks, and run into a similar problem, then this might be a good option for you, too.

Linux – keep it simple.

Bluetooth Breakdown: Sending gatttool commands from my Ubuntu Touch Phone!

Here I am, typing commands from my phone and controlling a Bluetooth Feather!

Of course, the moment of truth! The goal of this whole Bluetooth breakdown project was to figure out how to make my home made auto start work on my Ubuntu Touch phone. Well, here it is, working!

Although the interface could use a face lift.

Last we looked at this, we saw that we could write custom scripts to send the commands from the desktop computer to the BLE auto start, or use interactive mode of gatttool and do the work there. Now we can actually do the same from the terminal of the cell phone.

While this technically counts. We now need a snazzy program that just works with clicky buttons and that sort of thing. So, I suppose that will be the next phase of this project! Stay tuned for adventure!

Linux – keep it simple.

FreedomPop in Alaska? Does it really work for free?

Okay, so this might sound like some kind of gimicky advertisement, but it’s not. I work on custom ROMs for various cell phones, and it is becoming a bit difficult to keep swapping my sim card around to test them all out. The prospect of paying money for a second sim card that I will barely use any minutes/data/texts on is not on my agenda, but I’d be willing to use a free sim card for sure!

As you probably heard, FreedomPop is offering “100% free service”. So I thought I’d put that to the test with a phone that is not my daily driver. I checked their website, and supposedly, they have service anywhere AT&T does, which includes Alaska. I picked up one of their sim cards and here is what my experiences were.

Activation

Activation was really simple and straight forward. Note that I picked up the sim card from a third party, so it was not activated yet. I guess if you order straight from FreedomPop, they will activate it as soon as you call, then send it to you. I didn’t want to do that because I was concerned about “extra” charges and setup. See, most of their deals start you signed up for more, then you have to downgrade to free. Usually there is a time period before you get charged where you can downgrade. I was concerned, because their website uses free shipping, which takes up to 14 days to Alaska, which coincides with when you get charged for non-free services. So I picked up the sim card from a third party and activated it myself.

After unwrapping, there were instructions to call or go online to activate. I HIGHLY RECOMMEND GOING ONLINE so you don’t get confused or bamboozled. During the online activation, it will ask you numerous times which plan you want. You have to constantly check each page and make sure you click the “Basic” free plan.

You will need to provide a credit card and $11. One dollar is the activation fee. The other ten go into a “top up fund”. This top up fund is in case you run out of time, then you can automatically use the money in your top up fund to purchase more data/texts/minutes/etc. When I was done, I had a truly free account.

However, when it came time to pick my phone number, there were no Alaska numbers available, so I had to pick a number from Seattle instead. Not having a local number makes it difficult for land line callers, but really doesn’t matter for cell phone callers.

I will say, though, after inserting the sim card, it picked up service right away, and loaded the APN information for me. So, it does actually work in Alaska.

The catch

Okay, so there is always a catch. Like any other business, they want your money. In this case, they are not lying, though. You don’t have to pay anything month to month, provided that you don’t go over your minutes/texts/data. But in the activation, they took $10 for the “top up fund” that will automatically buy more when you run out. So if you are very careful, the plan is free.

But I was still concerned. I’m throwing this card into other phones, or flashing custom ROM after custom ROM, and so setting the data limit on one ROM or phone was not going to keep me safe. I wanted to make sure that I would not endure any future charges.

I looked around online, and found that you can go to the web site for your account, and turn off the top up feature. However, when you do that, you have to (by way of accept or cancel button) accept the “Safety Feature”. The safety feature costs about $7 per month. Here’s the catch:

If you turn off top up, and accept the safety feature. Then you can immediately go to your billing section and opt out of the safety feature. You still lose the $7, and you have $10 of credit in your account that you will probably never get back. But, once you do that, your account is not only free month to month, but you also will not go over your limit, supposedly, you will just run out of minutes/texts/data for the month, and have no usage until the next billing cycle.

billing

Here you can see my completely free month to month bill after paying $18 in fees.

The app

One other downside to this setup is the app. Don’t get me wrong, the app seems to work great. What I mean by downside is that you need to use the app to send a text, or calls. I did test it out, and you can dial from the normal dial app on your phone, but it will then switch once you call to this app. Also, sending and receiving texts are done through the app.

Don’t get me wrong, the app seems to work great. I have had zero issues with the app. But here are a few downsides for me and my phone testing work:

  1. The app comes from the Google Play Store. So you have to have a Google Play Store account to use their app. I did try getting the app “elsewhere” and several that I tried would flash, but didn’t “work” (it would endlessly try to connect to my account) until I tried it on a phone with Google Play Store and services installed.
  2. With the need for Google Play Store, it makes it difficult for phone testing, because I need to flash Gapps as well.
  3. With the app for VOIP phone calls and texts, I don’t get to test the actual phone and text app of phones that I am working on, which, since I’m working on them, I need to test them.
  4. Since you have to use their app, you can’t use the many million other cool texting/calling apps on your Android phone. E.g., ones with cool features that you might like.

Data, Minutes, and Text Usage

One question that begs to be asked is how far does this get you? In my testing thus far, I’ve found that if I use the WiFi at home and at work, I do not lose any data. However, visiting one web page without the WiFi on used up 20 mb of data. That’s right, one web page, with one view of it cost me 10% of my monthly allotment. With rates like that, a 30 minute “binge” of internet while outside of WiFi range will probably bring you to a halt for the month.

As for minutes, I don’t spend that much time talking on the phone usually.  Yesterday, on my regular cell phone with unlimited talking provided, I spent a total of 9 minutes on the phone between two calls. The day before I was only on the phone for 2 minutes. So for me, the minutes might actually work. If we take 10 minutes as an average per day, though, and multiply that by 30 days in the billing cycle, then you end up on the phone for 300 minutes, which means the last week of your plan you wouldn’t be able to talk to anyone.

Texting is another matter entirely. It’s only 9 AM, and I’ve already sent/received 24 text messages. Granted, I get up at 4 AM, so that is 5 hours. Some are work related, others are not. Either way, by the end of the day, I will likely have 75 text messages. This gives me six and a half days of texting. That just will not do for a daily driver. At least not for me.

So is it free? So far, yes. Is it great for the average user? Well, if you are always near WiFi, don’t talk to much on the phone, and only send texts every now and again, then I suppose so. But there are alternatives to stretch this out further…..

Stretching It Out With Alternatives

I can think of several ways one might stretch out the use of this FreedomPop service while keeping it free:

Use the WiFi of your local work and home, and pair it with free apps for chat or messaging services.

In theory, if you use something like Jabber, XMPP, or similar apps, like TOX, you could “text” people via instant message, which will not cost you anything as long as you stay on the WiFi. In some of these apps, there are options to video chat with someone, which is a lot like making a phone call. Some of these apps even allow VOIP phone calls themselves. However, these features may or may not cost money for their services. I’m sure you can find a few free ones though.

Use more than one FreedomPop sim card

Another option is using more than one FreedomPop sim card. With multiple cards, you may be able to swap between them, but this makes it very difficult to receive a call, as no one knows which one you are using. I haven’t tried it, but it seems logical, though not practical.

One of the phones I am working on has two sim card slots, but since you use the app to control usage, I’m not sure you could put both into one phone and actually make it work.

Another Resource

After I got started with this, I found a website devoted to getting the most free out of your FreedomPop account, you can find it at FreedomPop For Dummies.

We will have to see how well it works out over time. It’s not quite what I need, but it is great for just checking that the radio interface layer of the phones that I’m testing do work, and I can do a quick data test to make sure the internet works as well while working on my cell phones.

Linux – keep it simple.

Video Tutorial on How to Compile Android and Modify Kernels

video

For those interested, I have just posted a video tutorial series on XDA for building Android Oreo, Nougat, Marshmallow, and Lollipop on 5 different phones, the emulator, and 5 different ROMs. Also included are custom kernel editing, adding apps, changing source code, backgrounds, and more. Here’s what I posted:

From XDA: https://forum.xda-developers.com/android/general/guide-how-to-build-custom-roms-kernel-t3814251

===========================================================================

Praise God! Finally a video tutorial of how to build Android and modify kernels!

I have created a video tutorial and guide for how to compile Android, from Lollipop through Marshmallow, Nougat, and Oreo. The video series covers several different phones, the emulator, kernel and rom editing, app source code editing, and much more!

Who is this video series for?
Well, this video tutorial is a step by step guide built primarily for the beginner. This is written for those who already know how to flash TWRP, CWM, or the like, and who have installed a custom rom before. This is designed to help those who are ready to move up from flashing and installing other peoples custom rom to actually start making their own custom roms. I recommend that a beginner watch the entire series in numerical/alphabetical order (the videos are marked).

That said, I believe that an intermediate developer may find a useful trick here and there, and they should just skip ahead to videos of interest. Perhaps kernel development, or something along those lines.

An advanced rom/kernel developer will probably far exceed my feeble abilities, and will not likely find much useful information here. Perhaps if you are an advanced developer, you would consider continuing the tutorial or making an advanced video series! (See further posts for recommendations on contributing videos.)

Why did you put this together?
Well, after building roms for several different devices, I started receiving requests from users who wanted to start building their own roms, but didn’t know how. I didn’t have enough time to answer everyones questions, so I wrote a few guides, pointed others to guides that were available, but there are some things that you just need to see to understand. Hence, the video tutorial. I just hope that someone finds it useful.

This course was written in order! While Lollipop and Marshmallow are old by today’s standards, there is still good learning value in building them, and there are topics covered there that really make them worth watching.

What’s in the videos?
During the series, we will be building for the emulator, as well as 5 different phones of various brands, and 5 different roms. I hope that this will give the viewer a good idea of how to build for their own specific phone as they see the differences and similarities across the phones and custom roms.

[CODE]
+ Ubuntu installation
+ Java installations
+ Using Git, GitHub, GitKraken, and the command line
+ Fastboot and ADB
+ Heimdall/Odin
+ QFIL, QPST, SALT, and other tools
+ AOSP, SlimRoms, PACrom, AOKP, AOSCP
+ Lollipop, Marshmallow, Nougat, Oreo
+ Errors
+ Overclocking CPU/GPU
+ Adding Governors and I/O Schedulers
+ Sound modifications
+ Changing app colors, text, and icons
+ Adding prebuilt apps
+ Adding source code
+ Converting device from one rom to another
+ AND MORE!
[/CODE]

**** This is an UNOFFICIAL TUTORIAL. Use at your own risk! ****
Download links:
Ogg Vorbis Video GitLab:
[url]https://gitlab.com/alaskalinuxuser/course_android_developer_guide[/url]
Clicking on a video in GitLab will allow you to watch it online.

Ogg Vorbis Video Downloads:
[url]https://gitlab.com/alaskalinuxuser/course_android_developer_guide/-/archive/master/course_android_developer_guide-master.zip[/url]
This download is rather large due to the multiple videos.

MP4 Video GitLab:
[url]https://gitlab.com/alaskalinuxuser/course_android_developer_guide_mp4[/url]
Clicking on a video in GitLab will allow you to watch it online.

MP4 Video Downloads:
[url]https://gitlab.com/alaskalinuxuser/course_android_developer_guide_mp4/-/archive/master/course_android_developer_guide_mp4-master.zip[/url]
This download is rather large due to the multiple videos.

I also have several written guides available on XDA, here are a few:

Building ROMs for the Galaxy Note Edge: [url]https://forum.xda-developers.com/note-edge/general/guide-build-aosp-roms-kernels-note-edge-t3488840[/url]
Building ROMs for the Galaxy S4: [url]https://forum.xda-developers.com/galaxy-s4-tmobile/general/guide-step-step-instructions-building-t3402637[/url]

===========================================================================

Be sure to check out the videos or the XDA thread! I hope that these will help some of the aspiring Android developers out there!

Linux – keep it simple.