Troubleshooting phonecall problem on Librem 5 Birch

BM818-A1:

FDD-LTE:B2/B3/B4/B5/B12/B13/B17/B25/B26/B66 TDD-LTE:B41(200M)

HSPA+/WCDMA:B2/B4/B5

GSM/GPRS/EDGE:B2/B5
https://www.broadmobi.com/en/module_show.php?id=18

Only band that modem supports in your market is B3 it looks like . Im guessing thats your problem .

Looks like you need BM818-E1
BM818-E1:

FDD-LTE:B1/B2/B3/B5/B7/B8/B20 TDD-LTE:B38/B40/B41(120M)

HSPA+/WCDMA:B1/B2/B5/B8

GSM/GPRS/EDGE:B2/B3/B5/B8
https://www.broadmobi.com/en/module_show.php?id=18

Now you just have to find one . I looked I couldnt . Maybe purism can sell you one ?

1 Like

Yes, but you also need to distinguish between LTE bands and 3G bands i.e. they need to be considered separately depending on whether you use / your provider uses one or the other or both.

1 Like

Turned out that yes, it was possible to order it from Purism. I did so a few weeks ago and now it arrived!

This one looks almost identical to the one in the phone, but it does say (on the other side of it) “BM818-E1” instead of “BM818-A1” – so far, so good. Now let’s hope the phone doesn’t go up in flames when I try to replace this myself. :smiley:

6 Likes

I believe that the (possibly as yet non-existent) instructions do say to be extremely careful detaching and reattaching the antenna(e).

1 Like

Hmmm, antennae you say… that could be those two cables, perhaps?

The new modem is to the right, it has some kind of pins or connectors there in the corresponding places, I suppose I will need to attach those two cables there when the new modem is in place. But first, the question is how to detach them from the old one. I’ll try to pull straight up and see if that works.

2 Likes

Well I don’t have an L5 yet but that would be my assumption.

Also of course keep track of which cable is connected to which connector on the card. A photo is a good way of doing that. :wink:

1 Like

OK I managed to detach the two cables and remove the old modem. Here is what it looks like underneath:

3 Likes

Push them straight down when you go to reattach the cables, gently but firmly. You’ll be fine if you don’t rush.

2 Likes

Now I got the new modem in place, the trickiest part was connecting those two cables which would have been easier if the cable were a tiny bit longer. Anyway, it’s done, booted the phone and, after a “sudo service ModemManager restart” – yay, it works! :smiley:

Here is some output from “sudo journalctl -u ModemManager” for different call scenarios:

Successful call from other phone to Librem 5, with other phone hanging up:

Oct 13 14:26:17 pureos ModemManager[1626]: <info>  [modem0/call13] call state changed: unknown -> ringing-in (incoming-new)
Oct 13 14:26:19 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:26:21 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:26:23 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:26:25 pureos ModemManager[1626]: <info>  [modem0/call13] user request to accept call
Oct 13 14:26:25 pureos ModemManager[1626]: <info>  [modem0/call13] call is accepted
Oct 13 14:26:25 pureos ModemManager[1626]: <info>  [modem0/call13] call state changed: ringing-in -> active (accepted)
Oct 13 14:26:25 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:26:41 pureos ModemManager[1626]: <info>  [modem0/call13] call state changed: active -> terminated (unknown)

Successful call from other phone to Librem 5, with Librem 5 hanging up:

Oct 13 14:28:48 pureos ModemManager[1626]: <info>  [modem0/call14] call state changed: unknown -> ringing-in (incoming-new)
Oct 13 14:28:50 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:28:52 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:28:54 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:28:55 pureos ModemManager[1626]: <info>  [modem0/call14] user request to accept call
Oct 13 14:28:56 pureos ModemManager[1626]: <info>  [modem0/call14] call is accepted
Oct 13 14:28:56 pureos ModemManager[1626]: <info>  [modem0/call14] call state changed: ringing-in -> active (accepted)
Oct 13 14:29:30 pureos ModemManager[1626]: <info>  [modem0/call14] user request to hangup call
Oct 13 14:29:31 pureos ModemManager[1626]: <info>  [modem0/call14] call state changed: active -> terminated (terminated)

Successful call from Librem 5 to other phone, with other phone hanging up:

Oct 13 14:31:22 pureos ModemManager[1626]: <info>  [modem0/call15] user request to start call
Oct 13 14:31:22 pureos ModemManager[1626]: <info>  [modem0/call15] call state changed: unknown -> dialing (outgoing-started)
Oct 13 14:31:23 pureos ModemManager[1626]: <info>  [modem0/call15] call is started
Oct 13 14:31:24 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:26 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:28 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:30 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:32 pureos ModemManager[1626]: <info>  [modem0/call15] call state changed: dialing -> ringing-out (unknown)
Oct 13 14:31:32 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:34 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:36 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:38 pureos ModemManager[1626]: <info>  [modem0/call15] call state changed: ringing-out -> active (unknown)
Oct 13 14:31:38 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:31:58 pureos ModemManager[1626]: <info>  [modem0/call15] call state changed: active -> terminated (unknown)

Successful call from Librem 5 to other phone, with Librem 5 hanging up:

Oct 13 14:33:35 pureos ModemManager[1626]: <info>  [modem0/call16] user request to start call
Oct 13 14:33:35 pureos ModemManager[1626]: <info>  [modem0/call16] call state changed: unknown -> dialing (outgoing-started)
Oct 13 14:33:35 pureos ModemManager[1626]: <info>  [modem0/call16] call is started
Oct 13 14:33:37 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:39 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:41 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:43 pureos ModemManager[1626]: <info>  [modem0/call16] call state changed: dialing -> ringing-out (unknown)
Oct 13 14:33:43 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:45 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:47 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:49 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:33:51 pureos ModemManager[1626]: <info>  [modem0/call16] call state changed: ringing-out -> active (unknown)
Oct 13 14:33:51 pureos ModemManager[1626]: <warn>  [modem0] unexpected incoming call to number 'n/a' reported in call list: state active
Oct 13 14:34:16 pureos ModemManager[1626]: <info>  [modem0/call16] user request to hangup call
Oct 13 14:34:16 pureos ModemManager[1626]: <info>  [modem0/call16] call state changed: active -> terminated (terminated)

So, with the BM818-E1 modem in place, calls are working in Sweden using a Telia prepaid simcard in the Librem 5. Call audio seems to work in both directions.

The “unexpected incoming call to number 'n/a' reported” lines in the logs are still there and remain a mystery.

Lessons learned:

  • The little difference “BM818-A1” vs “BM818-E1” in the modem model can be important
  • It is possible to order the other kind of modem in case you got the wrong one
  • Replacing it is only a little bit tricky, can be done by an amateur, and is fun :slight_smile:
16 Likes

Can you please add your info in the wiki?

2 Likes

I just requested access to the wiki, if/when I get access I’ll add to the table there.

One column is for “Bands tested” – do you know how to find out which bands are used when making a call? The ModemManager log does not seem to show it, at least not by default.

2 Likes

Use your country mobile telecommunications database and go to a location where that band is the only band available from your directly or indirectly chosen mobile network operator? :slight_smile:

Seriously, there is probably a standard or non-standard AT command to get that. However if it’s non-standard then it will be modem-dependent (not a problem at the moment as only the BM818 is being supplied).

The other thing to be careful of is that a cellular modem may present as multiple /dev/tty* devices and you may have to know which one to feed the AT command to.

In addition to worrying about which frequency/band is in use, you will (first?) have to pin down which xG is in use. I think there are AT commands to force use of a particular generation. Again though, I don’t know how standardized that is.

You need a good command reference for your modem but for the BM818 I fear it might be in Chinglish.

The only relevant command that I have played around with is the one to get the signal strength (on my 3G USB dongle), which isn’t going to be useful for this table but may be useful for people who are having problems with getting a (strong / reliable) signal.

Clearly if Purism wants customers to complete this table world-wide then it is in Purism’s interest to provide additional hints if they are able to.

3 Likes

I’m surprised that journalctl isn’t giving the cellular band you are using. Does dmesg show the same info?

Try these commands:
sudo mbim-network status
sudo qmi-network status

If not, we should just remove the “Bands tested” column from the table.

@Skalman, I added your info to the wiki:

Did you test SMS and cellular data?

Great. Thanks!

Yes, both SMS and cellular data work.

About the voice calls, I noticed that it seems to change from 4G to 3G when a call happens, then after the call it changes back to 4G again.

I tried to find out which bands are used but so far I don’t know how (if it’s at all possible) to find out which band(s) it is really using.

My best attempt along those lines is using the mmcli command as follows.

First do this to find out the current number of the modem:

purism@pureos:~$ mmcli -L
    /org/freedesktop/ModemManager1/Modem/3 [QUALCOMM INCORPORATED] 0

The imporant number to note there is the “3” in the end of the /org/freedesktop/ModemManager1/Modem/3 string. It can be different next time I boot, or after flipping the modem kill switch off and on again.

Knowing that the number is currently 3, then we can use the command mmcli --modem=3 which lists a lot of info:

purism@pureos:~$ mmcli --modem=3
  --------------------------------
  General  |            dbus path: /org/freedesktop/ModemManager1/Modem/3
           |            device id: [...]
  --------------------------------
  Hardware |         manufacturer: QUALCOMM INCORPORATED
           |                model: 0
           |    firmware revision: MPSS.JO.2.0.2.c1.1-00032-9607_GENNS_PACK-1  1  [Feb 25 2019 01:00:00]
           |       carrier config: default
           |         h/w revision: 10000
           |            supported: gsm-umts, lte
           |              current: gsm-umts, lte
           |         equipment id: [...]
  --------------------------------
  System   |               device: /sys/devices/platform/soc@0/38200000.usb/xhci-hcd.4.auto/usb1/1-1/1-1.2
           |              drivers: qmi_wwan, option1
           |               plugin: broadmobi
           |         primary port: cdc-wdm0
           |                ports: ttyUSB0 (qcdm), ttyUSB1 (at), ttyUSB2 (at), ttyUSB3 (at), 
           |                       wwan0 (net), cdc-wdm0 (qmi)
  --------------------------------
  Status   |                 lock: sim-pin2
           |       unlock retries: sim-pin (3), sim-pin2 (3), sim-puk (10), sim-puk2 (10)
           |                state: registered
           |          power state: on
           |          access tech: lte
           |       signal quality: 78% (recent)
  --------------------------------
  Modes    |            supported: allowed: 2g; preferred: none
           |                       allowed: 3g; preferred: none
           |                       allowed: 4g; preferred: none
           |                       allowed: 2g, 3g; preferred: 3g
           |                       allowed: 2g, 3g; preferred: 2g
           |                       allowed: 2g, 4g; preferred: 4g
           |                       allowed: 2g, 4g; preferred: 2g
           |                       allowed: 3g, 4g; preferred: 4g
           |                       allowed: 3g, 4g; preferred: 3g
           |                       allowed: 2g, 3g, 4g; preferred: 4g
           |                       allowed: 2g, 3g, 4g; preferred: 3g
           |                       allowed: 2g, 3g, 4g; preferred: 2g
           |              current: allowed: 2g, 3g, 4g; preferred: 4g
  --------------------------------
  Bands    |            supported: egsm, dcs, pcs, g850, utran-1, utran-5, utran-8, utran-2, 
           |                       eutran-1, eutran-2, eutran-3, eutran-5, eutran-7, eutran-8, 
           |                       eutran-20, eutran-38, eutran-40, eutran-41
           |              current: egsm, dcs, pcs, g850, utran-1, utran-5, utran-8, utran-2, 
           |                       eutran-1, eutran-2, eutran-3, eutran-5, eutran-7, eutran-8, 
           |                       eutran-20, eutran-38, eutran-40, eutran-41
  --------------------------------
  IP       |            supported: ipv4, ipv6, ipv4v6
  --------------------------------
  3GPP     |                 imei: [...]
           |          operator id: 24001
           |        operator name: TELIA
           |         registration: home
  --------------------------------
  3GPP EPS | ue mode of operation: csps-1
  --------------------------------
  SIM      |            dbus path: /org/freedesktop/ModemManager1/SIM/3

So there is a part about bands there, it shows “supported” bands and the “current” bands. It is possible to choose which bands are “current” which I think means that it will then only use those bands, but, as far as I know, there is no way to find out which of the current band(s) it is actually using for calls/sms/data. I suppose that only a few (or only one?) of the bands in the long list of “current” bands are used in practice at a given moment.

This kind of command seems to work to set the “current” bands:

mmcli --modem 3 --set-current-bands='eutran-1|eutran-2|eutran-3|eutran-5'

Then if running mmcli --modem 3 again after that, it shows those bands as the current bands.

I played around a little bit with setting only one or a few bands as “current” and then tried to see if calls worked, based on those experiments I got the impression that calls are always made using the “egsm” band, or at least that the “egsm” band is a requirement for making calls. It could be using other bands also, together with the egsm band, I don’t know. Of course that could depend on what cell towers are nearby, I mostly just tried this around my house.

I don’t know but maybe the information about which bands are really used is something that only the modem knows internally, maybe there isn’t even a way to request that info from the modem?

Anyway, the mmcli command can be used for lots of other things, for example I was able to unlock the sim card using this command (instead of entering the pin using the GUI):

mmcli --modem=3 --simple-connect=pin=1234,apn=online.telia.se

Lots of other things can be done using mmcli, the man page has parts about sending sms for example, which I have not tried yet. But the man page does not seem to say anything more about bands, other than the “current” bands setting.

Something that I have not figured out yet is how to determine if it currently uses 2G or 3G or 4G – I guess that must be possible somehow because phosh shows it in the top left corner of the screen, next to the bars showing signal quality. Could it be that the “4G” in the corner corresponds to the “access tech: lte” in the mmcli output?

6 Likes

@Skalman, Thanks. I updated the wiki with that info.

I also got rid of the “Tested Bands” column in the wiki, since we don’t know an easy way to find that info. It must be somewhere since the interface shows the switch from 2G, 3G and 4G, but we probably have to read the Phosh source code to figure it out.

1 Like

you might want to experiment and observe the behavior of the L5-modem’s firmware in regards to when you initiate a voice-call from inside and outside. you should also inform us (if you don’t think that’s too personal) about how close/far you estimate you are from any tower(s) in your vicinity so we might have a narrower band of speculations going on … every bit helps (that’s how big-daddy-data works anyway :wink: )

structural materials of the house/construction help us a little too …

Can you enable it in the future? Does that mean it is capable of VoLTE?

1 Like

We can’t promise it yet, but there’s no hard “no” either.

2 Likes

Without VoLTE, the phone will be unable to connect calls in the U.S. at some point, and pretty soon. Plus, the carriers won’t allow us to activate it on their networks. I suppose it would still be possible to activate a SIM in a different phone (if its VoLTE-capable) and then transfer to the L5, but the call connection problem remains.