(last updated: 4.7.2023)
Hello and welcome to this little guide!
I recently found out that Signal Messenger can be used without a smartphone. You can set it up through signal-cli and verify the account through a landline number. Now as I embarked on this journey in order to introduce my grandparents to Signal, I realized that there doesn’t seem to be an up-to-date guide on the process, so I decided to make one of my own.
As I’ve done this on a Windows machine, this is what the guide will be based on. The steps should be almost exactly the same on Linux, but no guarantees.
Let’s get started!
Prerequisites
First of all, download the signal-cli
kit from the signal-cli repo. Just choose the newest release, download the one ending on “Windows.tar.gz”.
You will need to extract this folder. Use an archiver utility such as 7-Zip to do this, and place the contents somewhere you’ll find them, e.g. on the Desktop. In my case, I had to extract twice because it seems that 7-Zip is confused by the .tar.gz format.
Next, you will need to install Java so you can actually run the Signal CLI. At the time of writing, JRE 17 is required for this. Just check the “Installation” section of the README in the repo for up-to-date information and get it somewhere, if you don’t already have it installed. Note that after JRE 9, the JRE isn’t distributed separately anymore, but comes bundled with the JDK.
Time to Set Up Signal
Now we will register a new Signal account based on your landline number through the Signal CLI.
To do so, first start a shell, such as PowerShell or CMD on Windows. I generally recommend PowerShell.
After doing so, switch into the folder containing the Signal CLI using the cd
command. That could look something like this:
PS C:\Users\MY_USERNAME> cd Desktop/signal-cli-0.11.11
Register the account
We can now register your phone number. Note that you’ll need the number prefixed with a ‘+’ and the country code.
Before you execute this step: be aware that this effectively makes the executing instance the newly created Signal account’s master instance, used to manage the account. This does not have to be the same system on which you want to actually use Signal.
From here on out, FULL_CAPITAL words mean things that may differ in your case, and in commands specifically, should be replaced with your own data, e.g. your phone number.
The executable is in the bin
folder.
Execute this command:
$ bin/signal-cli -u YOUR_NUMBER register
This might not work anymore, in my case it didn’t. I got an error like this:
Captcha required for verification, use --captcha CAPTCHA
To get the token, go to https://signalcaptchas.org/registration/generate.html
Check the developer tools (F12) console for a failed redirect to signalcaptcha://
Everything after signalcaptcha:// is the captcha token.
To proceed, open the link mentioned in the error message and complete the Captcha. The site will ask for permission to open the Signal app; Decline this. Below the captcha box, there should be a clickable “Open Signal” text. Right-click this, copy the link and paste it into a text editor. It should look something like this:
signalcaptcha://signal-hcaptcha.5fad97ac... (very long code)
Remove the signalcaptcha://
part at the start. What remains is your captcha code.
Now execute the command from earlier again, but this time include the catpcha flag and the code you just generated:
$ bin/signal-cli -u YOUR_NUMBER register --captcha CAPTCHA_CODE
Now wait 60 seconds. Apparently, Signal doesn’t allow registering via voice verification on the first try so it tries to send an SMS instead, which you can’t receive on your landline number.
After the time has passed, execute the same command again (I swear this is the last time) but append the --voice
flag:
$ bin/signal-cli -u YOUR_NUMBER register --captcha CAPTCHA_CODE --voice
Verifying your account
You should now get a call on the number you’ve specified, practically immediately after the previous command returns. The caller will probably be in your language (otherwise in English) and will give you a 6-digit verification code. Note this down, then verify your newly created account via this command:
$ bin/signal-cli -u YOUR_NUMBER verify VERIFICATION_CODE
Link Signal account to app
Now install the Signal app on your computer, if you haven’t already, and open it. The app should show a QR code and ask you to pair the instance by scanning it with your phone.
But we’re not gonna do that.
Parse the QR code by e.g. cutting it out via snipping tool and uploading it to zxing.org, or use a QR code scanner on your phone and send yourself the parsed code. At the time of writing, the code looks something like this:
sgnl://linkdevice?uuid=************&pub_key=****************
Copy the entire code.
Now we can add the computer to your Signal account by executing:
$ bin/signal-cli -u YOUR_NUMBER addDevice --uri "YOUR_CODE"
If you’ve been using PowerShell until now, there’s a chance that this command fails with an error like this:
INFO AccountHelper - The Signal protocol expects that incoming messages are regularly received.
ERROR AddDeviceCommand - Add device link failed
org.asamk.signal.manager.api.InvalidDeviceLinkException: Invalid device link uri
at org.asamk.signal.manager.DeviceLinkInfo.parseDeviceLinkUri(DeviceLinkInfo.java:30)
at org.asamk.signal.manager.ManagerImpl.addDeviceLink(ManagerImpl.java:306)
at org.asamk.signal.commands.AddDeviceCommand.handleCommand(AddDeviceCommand.java:48)
at org.asamk.signal.App.handleLocalCommand(App.java:273)
at org.asamk.signal.App.init(App.java:213)
at org.asamk.signal.Main.main(Main.java:58)
Add device link failed.
'pub_key' is not recognized as an internal or external command,
operable program or batch file.
This has happened to me. In that case, just copy the command and execute it in a CMD instead. That worked for me! Not sure what the problem here really is, I guess something something encoding/special characters.
If everything was succesful, you should now see the Signal app on your computer syncing chats and contacts.
Note that, if you ever need to switch to/add another device, you can do so with the addDevice
command from above. But for this you’ll need this specific signal-cli
instance as far as I know… so don’t delete it! Though you should be able to recover it using your landline number for voice confirmation again, if you really need to.
You might need to execute this command once as well:
$ bin/signal-cli -u YOUR_NUMBER receive
Though I’m not sure if that’s necessary.
Now you’ll just have to wait about a minute and your newly setup Signal acccount should be ready to use on your computer.
We’re done!
If you’ve gotten this far, I guess that means everything worked out.
I hope this guide has helped you with the setup and saved you the hour of trial-and-error’ing your way through the process, digging through multiple guides, forums and Github issues that I went through.
Until next time o/