Introduction
Now, some may have realized it or not, but I think SSH, besides Git, is one of the greatest inventions mankind could possibly ever experience-no joke.
As much as I love to break my head over obscure topics such as Nix, Rust, and Emacs; whether it's possible to somehow use a Blackberry Classic as a semi-daily driver, because I just flippin love the OS and its keyboard (we will get to that).
SSH in general, and especially my ssh_config, is deployed everywhere I need it. All my aliases are the same, and it ALWAYS WORKS.
I can't emphasize enough how much the SSH protocol saved my butt.
Now, if you have a basic understanding of SSH, it's able to replace a big chunk of your networking stack.
You don't believe me? I was the same soydev as you, wanting a docker_compose.yaml for every service, only to realize that I somehow did not save the initial root password, now needing to log in to the Control Panel of my VPS provider to reset it.
SSH made me that Gigachad who just ssh-copy-id target@example.com, and he is good to go. Never do I have to care about the password or even dare to reset it through the VPS Control Panel of my hosting provider.
And exactly for that reason I want to showcase the great power of GLORIOUS SSH, its possibilities, and explore SSH packages and scripts I was not even aware of until this point!
Now, let's get started
Prerequisites
Blackberry OS 10
I'm not going to go too deep into listing the devices that support BBOS 10.
For the German folks, you can grab a used device here for 30-60 Eur. The investment is really worth it and fun.
BerryCore
You may grab BerryCore from here and follow the installation. It's well documented, and sw7ft is just a great guy. I truly believe his contribution is not recognized enough.
If you do not know him, let me explain his work. He sits there for hours, trying to provide the most diverse utilities from core POSIX-COMPLIANT CLI and TUI tools, packaging until he reached a point where he could run a Linux VM inside these more than 10-year-obsolete devices, getting X11 and even GCC 9 to run.
Now, if you also contributed in any way to BerryCore and I did not realize it, please let me know! I would love to mention your work too, because the possibilities really got to a point where even I got interested in the project again.
Sadly, besides the installation, the documentation of the whole project is a lot of AI slop; many packages are not documented, while there are some real gold gems buried inside this project.
I will demonstrate one, which I did just for fun, while being sure it would never work.
That's the great thing about free and open-source software. We may fork the whole project if things do not go as we like, but we can also contribute to the project so we as a community as a whole can benefit and grow.
Contributing to documentation for a project in such a state is really essential.
Even I, who literally spends his whole time in this area, had to wrap my head many times to find the right information.
Another important point to mention is that you don't need to be tech-savvy at all to contribute to docs.
Open any text editor, I use Emacs, the world's greatest Emacs Lisp interpreter btw, start your research, and note down everything that could be useful.
Most of the time these notes are just links to posts, repos, or configurations that worked for me.
The whole writing is done at the end.
At the current state, it does not matter that much how you write the documentation, as long as everything is somewhat logical, easy to reproduce, and actually works lmao.
Now, enough of the chit-chat; let's start truly reviving these devices.
SSH Setup
It took me hours just to be able to connect from my host to my Blackberry Classic because of three issues:
- I could not figure out the user I needed to specify for the connection
- I had problems with key negotiation, as Blackberry OS 10 devices use an older OpenSSH version
- I did not know how to set up the SSH daemon on my Blackberry device the right way
Now here are the solutions:
How to set up the SSH daemon is even written in an older Blackberry project by sw7ft himself. He may have forgotten it while being busy achieving value for humankind.
[https://github.com/BerryFarm/berrymuch/blob/master/doc/HOWTO-start-ssh-server.md[source]]
We will utilize his second approach, as it's foolproof, worked out of the box, and the first one did not work for me. So why not let him talk?:
first run
sshd -Ddthen do it again after it generates the private RSA key
sshd -Ddgenerate a RSA 2048 key. on your client,(the device your are planning to ssh from (note i have troulbe using a mac M1 laptop, they key doesn't work so i am using a linux VM
ssh-keygen -t rsa -b 2048 -C "your_email@example.com"Copy that key and inside your blackberry, when you first start term49 (term48)
vi .ssh/authorized_keysnow paste the generated key into that file.
start the sshd server( i close the app and reopen it before running this
sshd -Dddone
one problem solved, two are left
Getting the SSH User
TLDR: It's App
So if you want to SSH to your Blackberry, type in your terminal or SSH program:
ssh App@target.ip:2022
I was able to find the answer also in an almost one-year-old video from sw7ft, where his SSH program displays the username and even the port. Nice!
id-rsa could or could not be deprecated
If you were able to SSH from the second solution into your device, then you did it!
Sadly, it was, of course, not over for me.
As I previously mentioned the issue, here are two solutions:
-
for the sane people just utilizing a
ssh_configAdd the following snippet on your host machine into the
.ssh/config. You may change theblackberryin the first line to whatever name you like! For the sake of the demonstration, I will keep it as is, and take care to adjust the CHANGEME to your path and host. I will keep the port on 2022, as it's preconfigured already on the Blackberry devices. If you changed it, then of course adjust it:Host blackberry Port 2022 IdentitiesOnly yes User App HostName CHANGE_ME IdentityFile /home/CHANGE_ME/.ssh/CHANGE_ME HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa -
now for the not-so-sane people like me who configure their SSH settings via NixOS or home-manager:
{ programs.ssh = { enable = true; enableDefaultConfig = false; matchBlocks = { "blackberry" = { hostname = "192.168.8.223"; port = 2022; identityFile = "/home/cashmere/.ssh/bb"; identitiesOnly = true; user = "App"; extraOptions = { HostKeyAlgorithms = "+ssh-rsa"; PubkeyAcceptedKeyTypes = "+ssh-rsa"; }; }; "*" = { extraOptions = { StrictHostKeyChecking = "ask"; VerifyHostKeyDNS = "yes"; VisualHostKey = "yes"; }; }; }; }; }
And that's all!
SSH into your device
Now, if everything went well, you may SSH into your device with the following command:
ssh blackberry
Now we have full user access on the Blackberry through GLORIOUS SSH.
If it's nothing for you because you insist on full root access, then this guide was not for you, sorry :(.
If you appreciate this guide or are interested in the possibilities, let me just count a few that come to mind right now:
- Using yours as a portable SSH device to access from and into
- Syncing media from and to your Blackberry through
rsync - Port forwarding through SSH, which makes it possible to expose your great device not only locally but even to the whole world, to demonstrate how eager you are to host your static site on an obsolete device
- Ricing vim
Let's rice vim
Yeah, no joke, it somehow worked.
As I was utilizing vim and its great motions even on a Blackberry device, which is just superior, I realized we have access to vim version 8.x.
I checked out, out of fun, what vim version was required to set up a package manager,
#+BEGINCOMMENT Yes great vim people, I never was able to fully experience the sanity of VimScript as I just started out with neovim and lua, before fully converting to the church of Emacs.
I still use evil-mode in Emacs. #+BEGINCOMMENT
only to read vim had native support for external packages/plugins from version 8.x and higher.
After a small research I found Nerdtree, which allows us to integrate a file explorer into vim on a Blackberry, which is, as I mentioned many times, obsolete, not supported anymore, and not having a really native vim package in the first place.
In theory, we could set up pyright, a so-called LSP that allows us to have various checks of our beloved Python scripts. If some guy is able to get vim, gcc, and a somewhat current version of Python with external library support running, some of us-somebody-could set it up, or not. Many things are untold if nobody is going to discover them and note them down for the community.
Rant
Now, this is going to be a lengthy rant about how I experienced a negative shift in the BlackBerry community here on Reddit.
If you have read this far but are not into drama, I’d keep having fun with GLORIOUS SSH, as it’s something you will benefit from.
If you care about values in general, in various forms, I’d keep reading.
I’m not too deep into the BlackBerry topic, but long enough that I saw myself too much, sadly.
And yes, I am going to call out some people, because it’s sad to see the point we’ve arrived at compared to where I started.
New implementations like the Hackberry Pi and similar projects, which recycle obsolete BlackBerry 10 devices to create something new, are great! I have nothing to add to that.
Projects like BerryMuch and term49 are absolutely insane to me. This is going to be our core utility for this part.
sw7ft, a very great and kind developer, is releasing such insane updates; people just have to take his core contribution and start building things on top of it.
Same goes for the Berryfarm group. It’s just a small group of BlackBerry enthusiasts who share their knowledge with others. Great!
Then there are people like ReturningRetro, who started with great intentions but somehow lost track.
Same goes for CrackBerry Kevin. I don’t know him personally, and I’m pretty sure his contribution to BlackBerry itself will forever outweigh what I could ever contribute. Still, from what I saw in the last several months, I see nothing but profit made off people having false hope of reviving BlackBerry devices to a state that is unlikely to be reached again. Sorry to say it, but that’s the current state, at least for me.
Even a Zinwa Q25, as much as it’s a BlackBerry, I don’t know how much this project has to do with BlackBerry.
The folks over on [/r/cyberdeck](https://www.reddit.com/r/cyberdeck** are slapping a keyboard onto anything that comes to mind; still, they rarely come over here to present their newest builds, let alone try to monetize them.
I follow them too, and what I’ve gathered so far is that they’re just some chill people who like devices with a keyboard attached to them.
Still, that doesn’t mean hope is lost. We, as a community-and especially the tech-savvy people-can contribute more than enough resources to make these devices somewhat workable for us and for the non-tech-savvy people.
All I’m currently seeing is people wrapping some JavaScript into a webview, trying to get WhatsApp working in very obscure ways, and some people are literally charging money for these laggy services and applications while saying the performance issues are due to the old hardware.
Now, could somebody explain to me why 10-year-old APKs are still running much better than these freshly developed applications? Like, really, I want to be proven wrong, just so I can learn from the current state.
Now, don’t get me wrong. I think it’s always nice to earn money while providing value and doing something you like.
But the whole situation has come to a point where everything is just getting weird, and the whole essence of why I enjoyed being here has been lost.
Where to roast me?
Edit:
Of course, in the Reddit post, which I will link as soon as this post is online.
You may roast me through mail.
Otherwise, I am semi-active on Matrix.
If you find any other profiles on other platforms, it depends on whether I see it or not.
I think this rant may trigger more people than I expect. If so, and I get downvoted, then at least I can tell myself that I tried.