Address Book problem

I just solved it. I do not know what was wrong. Deleted all contacts and re-imported the contacts.vcf I had from android. Now it works with numbers of the form countrycode plus local number, in the form +302101234567 for Greece. Sorry for that, I am not sure what went wrong with the import of the contacts the first time. My android did not export +30. It just exported 2101234567. I had to manually re-add +30 to all of the contacts.

3 Likes

@antonis, FYI, mobile phones translate “+” into “00”…I suppose as a typing shortcut for the user.

In the U.S., historically, if you manually dialed a number in the same area code as you, you would omit the “1” and omit the area code. Example: To call (310) 123-4567 from (310) 765-4321, you would dial just 123-4567.

Nowadays, mobile phones typically store the entire number (including the area code), and they just dial correctly wherever you happen to be in the U.S. I imagine that if you stored any local numbers without the area code, you would connect to wrong numbers when roaming within different area codes.

An “area code” typically covers large areas of a U.S. state, county, or city, depending on the size of the population that is served.

By the way, did the L5 add the “+” and country code for you, or is that the way you had stored them previously in your other phone?

Thanks @amarok, No L5 did not add the “+”. I had to add it manually. And actually I have not done this yet for all my contacts. It is some work to do it… My android was old. It did not have the +30 in front of the numbers. In any case, now it works.

2 Likes

It seems like you got this solved already.

I think the phone added the +1 because it assumed you were not in the USA and were trying to call into the USA. For me, a USA resident using cell phones since 1986, mobile phones when they were still not smart would assume local first based on user input the carrier for the device and tower connection for the call.

A setting in the phone was the local area code (quaint :laughing: local is meaningless now); so with mine at the time being 716 (Western New York State USA) and what used to be a city code 773 (Grand Island, NY) for my first car-mounted phone, followed by “the house connection” 1234 {716-773-1234 | (716) 773-1234}, if I dialed 877-1945, the phone or the carrier assumed I was in the 716 area code and prepended it to their switching system. If I dialed 309-235-9892 it would assume the 01 country code and act appropriately. Oddly, if I was on Grand Island, NY (773) and I dialed 773-5723, it would be billed as a call to 01-716-773-5723 because the Toronto mono tower blew out so many watts that my phone thought I was in Toronto. This was a huge flap back in the 1980s for Buffalo and Rochester NY-based mobile phone users.

It seems that the 690 area code is reserved for the USA but isn’t being used,
https://www.areacodehelp.com/where/area_code_690.shtml
so maybe the phone was almost assuming things right? Obviously, you wanted a country code, but the software didn’t realize there was a second hit while searching for 6 then 9 then 0. However, it shouldn’t have assumed the USA for an unused area code.

2 Likes

Bear in mind that the software itself is changing all the time, so it can be difficult to know whether
a) something changed in the software or
b) you did something differently or
c) there is still a bug and it will still work or fail unpredictably.

I say again though: I have chosen to store (and import) all my contacts without the +country-code and that has always worked for me. I expect it wouldn’t work if I went overseas but that isn’t frequent, is expensive to call from, is ‘impossible’ right now anyway - so not a priority to worry about.

More generally, into whatever is the international access number in the phone’s current location.

The “+” is not just a typing shortcut. It is a syntactic indicator that tells the phone whether the number that is stored is intended to be a full international number (requires one set of rules) or is intended to be a domestic number (requires a different set of rules).

1 Like

I knew there had to be a better reason. Thanks for the clarification.

1 Like

I guess you are right when saying that the software currently changes frequently. Because according to the above, I shouldn’t have the + in front of 30 210 1234567 when dialing from within Greece. But currently this does not work. It only works if the number is written as +30 210 1234567

All I am saying is that the phone should not make any assumptions without my permission. For example, when I dial in Calls 210 123456 it just dials these digits and the call goes through. So Calls works properly. But the address book is the app that makes the assumptions. If I write 210 123456 in AddressBook and press the dial button, the app sends another number to Calls. It sends +12101234567.

So the Address Book and not Calls, makes assumptions. This is a bug to my eyes.

For example, what will happen if I add a 4 or 5 digit number to the AdressBook. Say the number of a service. The telephone carriers have 4 digit numbers. 1314 is the number of my carrier. Maybe it will dial +11314. I will check.

1 Like

I don’t think you fully understood what I meant.

The “+” is about telling the phone that the number as stored is a full and complete international number (which, through the application of rules, is able to be used anywhere in the world).

The “+” does not say to the phone that the number is a foreign number.

In other words, it is perfectly valid to include the “+” and a full international number for all phone numbers that you store, whether the phone number is that of someone in Greece or someone outside Greece, and if you travel outside your country fairly often, this is probably the best approach.

None of this has any relevance to what you actually dial, if you manually dial the number yourself. It is only about what is stored.

I remain open minded about that. Until we understand better what is going wrong, it may or may not be a bug. (I’ve stored all my numbers without +country-code and I don’t have this problem of having “+1” added.)

It clearly isn’t working for you. That much we can see.

Unfortunately that’s not how mobile phones work. If we were talking about a landline, you would be right. On a landline you would expect that what is dialled is nothing more and nothing less than the buttons that you press - and the responsibility is on you to press the right buttons.

Because mobile phones are designed to be portable across international boundaries, they are expected to adapt their behaviour to the country in which they find themselves - and that requires doing things behind the scenes that you didn’t explicitly request.

By the way… can I stop the vibration for incoming calls and leave only the sound?

And in Calls do you know how to delete the list of all the previous made calls (incoming or outgoing) ? I can delete them one by one but not all of them. Can I clear this list maybe from the commandline and the filesystem?

Hah. I asked the same question. You’re not going to like this but:

To me this is a significant gap in the GUI.

Perhaps you’ve looked into this already, but is there some sort of locale setting being missed? Your phone acts like it’s an American phone in Greece, whereas @irvinewade’s phone acts like an Aussie phone in Australia.

1 Like

Good question. Also, whether the locale was set before or after the import?

I can confirm that the standard locale file contains a section LC_TELEPHONE.

I can confirm that I have definitely set my locale on the Librem 5 (to en_AU). (I set this long before I imported any contacts because I was getting annoying error messages, completely unrelated to contacts. I did make calls before setting the locale but those were manually dialled and they were not international calls.)

Yes, I did not change the default locale. Because I prefer English for the interface, as Greek is not always translated nicely. I did however generated the el_GR locale.
Checking LC_TELEPHONE with echo $LC_TELEPHONE returns nothing. If I need to set this to el_GR.UTF-8, how do I do it properly?

That might be your problem then. Nice one, @Gavaudan.

LC_TELEPHONE is a section within the locale file.
view /usr/share/i18n/locales/el_GR

For me that section says:

LC_TELEPHONE
tel_int_fmt    "+%c %a %l"
int_prefix     "30"
int_select     "00"
END LC_TELEPHONE

but obviously I am not set to el_GR.

At this stage, it may be better to select el_GR.

If you are really keen, you could create a new locale that is en_GR, which is a copy of e.g. en_US but with the LC_TELEPHONE section copied in from the el_GR locale. However this may be a can of worms. It’s not something I have tried.

If you have created a locale (or it already exists) then you can change locale using

sudo dpkg-reconfigure locales

This is a slightly clunky character cell UI. See the Community Wiki Tips & Tricks for how to use it if you have not used it before (or work out what the corresponding GUI is!).

2 Likes

Ah yes! I see. Great. Indeed in locale en_US it says

LC_TELEPHONE                                                                    
tel_int_fmt    "+%c (%a) %l"                                                    
tel_dom_fmt    "(%a) %l"                                                        
int_select     "11"                                                             
int_prefix     "1"                                                              
END LC_TELEPHONE

Where in el_GR it says:

LC_TELEPHONE                                                                    
tel_int_fmt    "+%c %a %l"                                                      
int_prefix     "30"                                                             
int_select     "00"                                                             
END LC_TELEPHONE   

I have to think what to do … :thinking: I never had a chance to use this variable on pc-desktop. So it did not cross my mind it would be that. But it is a phone! Hmmm…

1 Like

I think @irvinewade’s suggestion to make a en_GR locale is a good idea, though I also have never done that. Alternatively, you could swap out the LC_TELEPHONE stuff so that the el_GR numbers are there. Make a backup of what you have now in case it does end up losing its mind.

Trying to change the language to Greek from the Settings, the list is empty. There is only US English and some arabic one. No other languages are available on my L5. I guess this means I need to install some packages. Which ones?

?

My phone came with six languages as standard (Arabic, German, American, Spanish, French and Russian) so nothing for me :rofl:.

I used the shell to persuade it to speak Australian. Refer my previous post. I don’t think you need to install any additional packages but I am not certain on the commands to use as it is kind of the thing that you do once in the life of a computer, very early on, and then forget about it.

I found that /etc/environment is depreciated in favor of /etc/default/locale
This file contains LANG set to en_US.UTF-8 and other LC variables set to el_GR.UTF-8, but it does NOT contain LC_TELEPHONE. Moreover
echo $LC_TELEPHONE returns nothing. So I added to this file the line
LC_TELEPHONE=el_GR.UTF-8
and rebooted. Checked in the terminal that the system picked up the change:
echo $LC_TELEPHONE returns el_GR.UTF-8

But the surprise is that now the address book can not dial any number. No matter what is the number you click on the dial button and does nothing.

I remove the LC_TELEPHONE and reboot. Calling works again from the address book. I try a second time to set LC_TELEPHONE and reboot. Now the address book passes the number to Calls but again with the +1. But Calling does not work at all. Even if I use the dialpad Calls can not start the call.

I remove the LC_TELEPHONE again, reboot and the system works as it was before making calls either from the dialpad or from the address book with numbers starting with +30.

So my conclusion is that Calls does not like the el_GR.UTF-8 string for LC_TELEPHONE and the address book it still passes +1 to Calls for numbers not starting with +30. :frowning_face: