Therefore I am wondering if anyone here uses a raspberry pi as their main computer, maybe for coding on, paying bills, surfing the web etc.
How is the experience, what version do you use with how much ram etc? What are the issues, if any?
Overall the experiment was positive. The reason I stopped was because I ran into issues getting certain libraries to work correctly on the RPI 4 and it was getting more annoying to solve that than doing my actual work. I did a similar experiment with an RPI3 and while it is definitely slower than the RPI4 the issue was not the speed so much as the RAM. Having Emacs, a pdf manual open, the OS in the background, and the software I was working on running started getting me dangerously close to the 1Gb limit, and I had certain compilations outright fail because of that. I think 2gb definitely gives you the minimum amount of head room to make an RPI4 a viable option. The other bottleneck is the SD card. I think a 4gb RPI4 with a slight overclock, and SSD is would probably the sweet spot for this type of exercise.
The Pi4 with 8 GB is very usable as a main computer. I'm a Fedora person normally but for the Pi Raspbian is always my choice because it is so well optimized for low memory devices. Ubuntu MATE is fine too but not quite as optimized.
Always the biggest challenge is web browsing. Keep your tabs under control and web browsing on the Pi4 with 8 GB is fine. Firefox or Chrome doesn't matter too much. FF seems to be a little better on memory when memory is low (seems like maybe it swaps tab memory out to disk?) but I still use Auto Tab Discard to sleep tabs that aren't used.
https://github.com/youfou/pianoteq-pi & https://github.com/whyboris/Digital-Piano-LED
I spent around 5 months in 2019 using a Raspberry Pi 3B+(1GB of RAM) as my sole home computer because my laptop broke. You can browse the web if you aggressively close tabs and block almost all js (and periodically restart the browser). Editing latex was possible as was writing some code (although using a modern editor and the web simultaneously isn't always an option - I grew to love nano). I did have a access to a modern x86 machine in an office.
Github was probably the most painful website (although it's still better than Gitlab which doesn't work at all without js). I think it had recently removed a bunch of functionality for users without js and it's not designed with people who care about every 100MB of RAM in mind.
It worked fine. It could even play a 1080p YouTube video. However, everything lagged. The most painful thing was that it took several seconds to render a website when it's normally instantaneous. I found it quite frustrating to use, so I ended up buying a $200 mini desktop computer that runs fantastic.
My biggest issue is that it locks up a lot with sites with video. Since I use the Pi mostly for work stuff, I can avoid that and do off-time browsing on my phone.
The other issue is the quirks of a new system. Some apps have no ARM option. Some issues require a lot of Googling.
I don't see why you would anyone would go this route intentionally though. It seems like there would be better options for not much more money.
One thing I do like about the Pi, is that it's a lot less bulk compared to my desktop. It seems like the Pi would be great for people concerned about E-waste. It might also be a good option for people who use it as a client to a cloud desktop service. Last I looked, AWS and Azure didn't have ARM versions available though. So, I would have been limited to a web based client. If that hasn't changed, then I imagine it could soon.
I loaded up Manjaro ARM on a Crucial NVMe, attached using a UASP-capable USB3 case. I used Sway and the new, FOSS GPU drivers, and enabled hardware acceleration in chromium and vscode.
To my surprise, the browsing experience was absolutely OK, I couldn't notice any lag on most websites, including hw-accelerated YouTube, with the only exception being gitlab.
All other apps (mainly Telegram Desktop, zutty) worked absolutely fine, no difference at all from my daily driver.
Rust compilation also felt normal, it actually felt weird not hearing any fans with 100% CPU usage :)
The only minor disappointment was vscode: for some reason, even when using the same acceleration flags used in chromium, switching files took ~500 ms, which was the main dealbreaker for me (and for some reason the acceleration flags slowed down everything even more, or simply had no effect, quite the opposite of chromium).
I briefly considered learning vim, since it has LSP integration I could keep using all the language servers I used in vscode, but in the end switched back to my laptop after lasting two days (and I probably would've switched back anyway, since I usually work outside with my laptop in spring).
Edit: the biggest PITA has been Bluetooth. I was occasionally able to connect and pair, but not always. I eventually uninstalled everything --blue-- and hve not regretted it. I now use a cheapo WiFi keyboard to do the initial login.
Mostly it worked pretty well, but with too many tabs opened it would start to become cpu bound. Most electron apps were unusable too.
For me it was a process of trying to spend less time online: the idea was I'd alter my behaviour by using a more limited medium. On that count it was a resounding success. I stopped because I missed games, so now I have an Udoo Bolt Gear, which was about £400 and is good enough for what I play without being wastefully over-specced. Same relative minimalism, but just a bit faster with more room to upgrade. I'd recommend trying both.
As long as you can live with slightly sluggish mouse click response, it's OK. Make that very sluggish on heavy Javascript web stuff like Gmail or Facebook. But it all works.
Video playback is an issue. First I ran the default 32-bit Raspi OS, and 1080 was marginal (forget 4K - it does drive the resolution but it's not fast enough to really do video - fullscreen Youtube for example at that resolution). So I applied various copypasta from the internet to fully enable hardware accelerated video - the framerate of glxgears confirmed that GL was faster than before. Video was now performant but with horizontal tearing issues that weren't there previously.
After the official 64 bit Raspi OS came out, I started over with that. Performance is not noticeably different. Not all the copypasta from before worked; no tearing issues now, but again if you want to play local media with VLC or mplayer, better stick to 1080 and if you want to comfortably watch fullscreen Youtube, go to 720. I have some quick command line aliases to switch the display resolution for this.
The device doesn't do suspend/resume, but on the other hand, desktop idle uses about as much power as a night light, so it's simply left on all the time. It's in the open (screwed to the bottom of a desktop) with a pair of small heat sinks stuck to the main integrated circuits. Thermal is OK; about the only way to drive it to thermal throttling is the "stress" command; otherwise heat is not a limiting factor.
One thing that was mostly impossible last time I tried it with Raspi OS (32-bit mode) was video calling with the common web-based tools. Skype, for example, didn't offer it, no matter what the system configuration. This may be a deal breaker for "main computer".
Others have said that the Wifi on Raspis is solid, but in my own experience they always end up plugged into a hardwired ethernet connection.
Far, far better than nothing, but limited enough that there's things you just can't do.
(I've also got 3 on TVs, one as the house fileserver, and a couple that get thrown down whenever im doing a project that can use them. those aren't "main")
He doesn't use it for anything other than web browsing. He did write a few books on it using Google Docs, but there's nothing stored locally.
It's mostly fine for basic needs. Every so often someone will send some kind of attachment in an email that doesn't open cleanly with Google Drive and I'll have to help him out.
It's probably less work than his old PC was to maintain. But like... that's sort of by design. Dad doesn't have admin privileges, and it's set up to auto-update nightly.
That version is much slower than today's Pi4, and I ended up using it mostly for command line sysadmin type stuff using a terminal and SSH. I used it for 1 year, before switching jobs.
While not running a desktop, today I have 6 Pi4s running a Ceph cluster and serving CephFS in my house. It's actually quite easy to set up, and very usable. Not super fast, because I'm using SMR drives, but definitely very usable as a very reliable NAS. Definitely more reliable than any ZFS setup.
Overall I don't recommend it. Might be better with a slightly higher-powered NUC (Intel Gold and above) or a mid-range laptop - they both will consume more than the Pi but less than a normal desktop, though at a greater price.
One of our daughters moved in with us shortly after that so I moved the Pi to our family room and she's been using it since.
I used an "Argon" case that moves all the ports to rear of the case. It has a fan to cool it if it gets too heated up and I configured it to boot off an external SSD drive. That was pretty easy to do and makes a huge difference in how fast it boots up and loads apps.
I bumped up the processor speed a bit, it's not as fast as my old Mac and the tools not quite as polished but Geaney is a pretty good text editor for coding and FileZilla works fine to get and put files.
Aside from a web browser those are the tools I use most so the money and time spent on setting that up was well worth it and it's more than paid for itself.
I also have a Raspberry Pi 4 (8gb) with an Argon One M.2 case and a Kingston SSD. I use it mainly for coding/tinkering in C, Pharo, Racket etc. Not logged into any social media or mail in the web browser, just using it to read docs etc. Fast enough to be usable but no speed demon for sure. Overclocked to around 2GHz/64-bit OS.
Here's a quite recent (yet outdated) screenshot of my DE in use: https://i.imgur.com/zn2gHtu.png
It's fine. Almost. I'm using neovim as my editor, gnome terminal as my terminal emulator (with bash/tmux) and epiphany for surfing the web - mostly one tab at a time since it can't handle more than that easily.
The thing I like most about this setup is how it keeps my focus centered on a task as there are not many possibilities for distraction. No absent minded web surfing, no binge-watching on YouTube and so on. But every now and then the entire system freezes completely and I have to disable a lot of useful neovim plugins (e. g. LSP).
The reality is that a used laptop is more affordable by the time a screen, keyboard, pointing device, power supply and clock are added and provides orders of magnitude better experience.
Or to put it another way, using an RPi as a daily driver was not a hill I found worth dying on. Linux is Linux. Good luck.
I’ve made a home “Are you in a meeting” website that everyone on my WiFi can point their browsers to. I have https://tiddlywiki.com instances running there. It manages my VPN when I’m out of the house. And I block a huge portion of ads when I use it as a DNS server.
I ssh into it from my Windows machine and that seems to work really well. I have noticed a slight amount of lag in the ssh sessions but it's nominal and not a show stopper.
That being said, I only use it as a server and for the last year haven't had a single issue with it. I love it for what it is and want as many as I can get my hands on.
It runs what I need on the go (browsing, youtube and video/photo editing, not to mention SSH and VPN software in case I need to hop back into my work's network), it fits nicely in my carry-on luggage with my tshirts and socks.
I also have a chromebook that I use for basically the same things - it's not great but it's also enough for me when I travel.
For many things, it is definitely faster: compiling, ffmpeg, running lots of shells with lots of scrolling in the background, interactive use with high loads.
For browsing, it was definitely slower. Firefox on ARM is significantly slower than Safari on a Core 2 Duo, even when Firefox has more and faster memory and has four real cores.
I eventually decided to build my Pi in to a 1U case with two mirrored 8 TB disks and a serial console, and colocate it. It makes for an excellent, low power server.
It has been great for all my needs including:
- Running a business on shopify, including all my asset/image creation
- Development (React/Javascript frontends, Elixir/Erlang backends, python)
- Consumption (Hacker News, News Sites, RSS, Youtube Videos, ...)
- Productivity (Email)
- Writing (Mostly in emacs + pandoc)
Everything works well on it, and for only $200 I don't get too concerned about traveling with it and it breaking.
The truth is it's just not powerful enough for that (or even 1080p), and stutters and tears on almost any media, and is just sluggish in general (It's not just the sd card, I paid out for a top end SDXC class 10, U3, V30, A2 etc, etc card, nor thermal, I have heatsink, fan). I really can't imagine using it as a main machine, with tens of active browser tabs, programming compilations, open documents, etc, etc.
I am frustrated that my amazing iPad Pro can't be used to write software, so I spent a few months trying use a Raspberry Pi 4 with a 2 TB hard drive over VNC with Jump.
Ultimately, I couldn't get used to the keyboard shortcut conflicts and the mouse emulation for touch screen.
I continue to use that pi as a linux machine from a beefy Windows 10 GPU beast.
For mobile use cases, I gave up on iPad + pi and bought another laptop.
It’s totally doable from what I understand and sips tiny amounts of power.
An M1 may be better but I don’t know if it can get as low power.
The performance is, of course, not that great. The official Raspbian desktop had a few glitches. But I'm using it mainly for coding and surfing the web with the occasional YT video, and it handles that fine.
The 8GB RAM is overkill. Really, you have to try hard to fill it all because it's clearly not the bottleneck. I set up a 3GB ramdisk partition, to me quick (even if volatile) storage is more valuable on a device running from an SD card.
Might work for the vi/ emacs only crowd though.
They’re very cool for non-daily driver though
I've long waited for a proper ARM based desktop. If I can find something peppier with a GPU that blender likes (I'm low poly/casual), I'm liable to switch from Intel Mobos.
For multi-tasking, since you cannot really run a lot of browser tabs, I've considered four+ Pi4s in a non cluster, switching with KVM.
Pros:
1) Chromium with 40 tabs works quite well.
2) MiniDLNA serves 4K HDR videos to my Android TV over 2.4G Wi-Fi quite well.
3) I have an Aluminium Casing with Dual fans, and it works quite good. Noise is reasonably low.
Cons:
1) Some applications (like Jellyfin Server) do not work. YouTube 1080p is not smooth.
2) 10-bit HEVC encoded 1080p videos don't play quite well.
3) Connection to 5GHz Wi-Fi is not good. So I use 2.4G Wi-Fi.
4) My Logitech mouse stops working sometimes, though keyboard works. I have to remove the USB receiver and re-plug it.
I bought a third card and now I turn it off every time I’m done with it.
Most websites are heavy and what I mean by that is they have a lot of javascript, so its not just downloading stuff, its then having to run that stuff which is an overhead the rpi cant quite handle. I dont know if the javascript executing on the rpi can be optimised but I suspect the javascript is better optimised for Intels and AMD's.
The mouse is too twitchy, it needs a bit of damping to make it smooth moving over the desktop and hovering over buttons. I suspect there is a bit of AI in windows which predicts when someone clicks a mouse button that they actually wanted to click the mouse button over the screen button, ie something to improve the accuracy and experience of windows.
Has anyone tried working with CM4 and it's on-board eMMC as a daily driver? I imagine some of the bulkiness of having to lug around an external drive for the OS might be solved this way. But I've not tried it.
There are all the normal issues of "desktop linux".
They are useful for a lot of "portable computer" applications that would normally be assigned to laptops. For example as a controller to talk to the physical world like weather stations, 3D printers, etc.
I use it to automate a large Jekyll-based static site, downloading RSS feeds and committing the content back to GitHub
It runs a few different Twitter bots.
It runs Calibre Web so I can serve my ebook collection via the Web and OPDS.
It’s an Airplay receiver.
It runs Home Assistant.
I also use it as a dev environment if I’ve only got access to an iPad.
That said I keep all my software compatible and I'm 100% sure I will be switching in the next 10 years.
I doubt it would fly today because the web sucks and websites are huge memory drain
RPI are quite powerful nowadays so it wouldn't surprise me much
You'll probably run into issues if you try to run a full stack with Docker + React + whatever you use.
https://news.ycombinator.com/item?id=30783775
> I spent some time traveling where my only computer was a Raspberry Pi 4 running 64 bit mode, and the only sensible graphics performance I could get in wayland was with “foot”. https://codeberg.org/dnkl/foot
> I was really only using it while staying with family and friends where I was always able to use an old monitor or a tiny "bedroom/kitchen" TV, but a hotel TV would be fine too (I'm assuming ports aren't blocked). I brought a Logitech K400 which is small, wireless, and has a builtin trackpad. Was also only using it for programming and basic web browsing. I don't recommend the keyboard (keys are a bit wobbly, some odd key positioning and shapes, definitely takes some getting used to, and the trackpad is relatively poor), but I just wanted something I could use for an hour or two a day, and it was perfectly acceptable for that. If I had to use it for a few more hours, I'd just bring a proper keyboard and mouse (weight permitting).
> I was confident I'd be fine though, I set it up in advance and used it briefly on the couch with a tiny monitor for about a week.
> I strongly recommend taking advantage of the USB HDD boot that's now supported on Pi 4 -- even some 15 year old 60GB spinning platter you have lying around from a long dead laptop is in my experience going to be faster than an SD card. USB3 to SATA connectors are cheap and reliable.
> The reason I did it was just trying not to be wasteful. My laptop died and I have no problem getting a new one, but I'm pretty sure I'll need a new one in a year for work -- the problem is I won't know the specifications (even OS, architecture, etc.) that I'll need until then, so I just wanted to see if I could get away without having to guess in advance. Generally I like to buy only when I need to, and to buy the best thing available at that time (within reason), and use that for a long time.
My uses that are not as a main computer, are that I use a Raspberry Pi 3B+ primarily as a Plex server (streaming content from two big USB3 connected WD HDDs to a PS4 via DLNA), but also a few other things (gitea, Time Machine (though my Macbook is now defunct), tunneling to a supercheap VPS elsewhere). I also use that same RPi3B+ and a Raspberry Pi 4 (4GB, running in 64-bit mode) for occasional ARM dev (armv7h and aarch64, respectively), but it's purely educational (assembly, etc.)
I've spilled quite a bit of digital ink on the variety of systems as well (the tag includes some of the other systems too): https://www.sevarg.net/tag/raspberrypi/
Computers I've used as "desktop grade systems" over the past 5 years or so:
- Raspberry Pi 3B/3B+
- nVidia Jetson Nano
- Raspberry Pi 4 8GB
- ODroid N2/N2+
- PineBook Pro
Advice and notes from this process:
- If you try to run from SD card, you're going to have an awful time of it. They're just not fast enough to be useful for more than very light use. You either need a USB SSD or, on some systems, you can use eMMC modules that, in my experience, perform well enough to be "not the main pain point." The PineBook Pro supports NVMe, I've just never found the eMMC disk performance to be bad enough to really be a limit. But improving the disk IO from SD cards is critical to desktop use.
- 1GB of RAM is useful but painful. 4GB is fine, but you feel some pain in AArch64 from memory pressure (and nobody's doing ILP32 distros). The Pi4 with 8GB and a 32-bit install has memory for miles - it's quite free from memory pressure. You can gain a lot using zswap (not zram, they're different) to front swap and do some compressed page stuff before touching actual disk swap. It compresses data into RAM and is both far faster and far lighter on the disk than going to swap, but you still want a big swap file on the disk to handle paging stuff out. If you're beating on it, you'll have a bad time, but "pushing stuff that's not going to be used for a long while if ever again" out to disk is entirely useful, and helps free the limited RAM for actual use.
- You can improve your life dramatically with heavy ad blocking or script blocking in browsers. Pihole, Ghostery, Noscript, any of those. They make a huge, huge difference in how browsers perform on lower speed ARM boxes.
- Fix the governor settings. If it's hardwired, use the performance CPU governor and pin the CPU clocks wide open. If it's portable, schedutil is radically nicer than ondemand for handling real world use cases, though the difference in battery life between that and performance isn't substantial. I freely use both on the PBP. When modern Electron apps lag badly until you start typing a few words in, it's a governor issue.
I won't claim they're as nice as a decent x86 system, but I've been trying to get away from x86 for a while, had a very nice M1 until Apple pissed me off, so they're most of what I use as computing devices anymore.
If your goal is "I want all the features of a high end x86 box but for cheap," you're going to be disappointed. But they're remarkably useful computers, and do quite a few things, very well.