[{"content":"Matrix in general Most chat platforms have one signing server, which if you think about it is like the internet having one dns server. If discord goes down, you\u0026rsquo;re kinda fucked. Matrix solves this through communism.\nHomeservers and awayservers Homeservers are just servers. On servers you can host users and rooms, and through special properties, rooms can be voice chats or spaces. Pretty simple stuff. The biggest one is, obviously, matrix.org, because signing up is free. Matrix.org also allows free hosting for spaces, the equivalent of discord servers in this context. Spaces are just rooms with special parameters, but we can get to that in a minute. Finally, matrix.org manages federation with other servers. Federation can be oversimplified into lots of encrypted API calls that result in profile information and messages being validated and fetched from a remote homeserver.\nUsing the given certificate, there is a mutual understanding between different homeservers that as long as the cert is right, the enclosed information will be correct as well. Federation used to act over port 8448, resulting in some funky port forwarding, but in matrix 2 and 3, you can make it run in parallel with the http api, only on port 443. This also lets federation leverage ssl instead of dodgy round robin encryption, making man in the middle attacks nearly impossible unless someone manages to steal your private key, not to mention you can run the whole thing behind a reverse proxy.\nMatrix as a protocol was initially built to be like IRC, with many public connectable rooms and no real worry about impersonation or chat history. Discord then started being shit, meaning there was a demand for an end to end encrypted decentralised chat network that somehow managed to maintain some level of identity. Hence, the whole protocol was rebuilt and iterated on to be what it is today\nRunning Matrix As usual with apps, there is a server and a client. The officially maintained server is called synapse (who knows why), and is runnable as a docker container fairly easily. Of course, I have to jump through a bunch of nix shaped hoops to get it to work, but other than that I had a server \u0026ldquo;running\u0026rdquo; that I could log into almost immediately. However, when DNS is involved, nothing is ever easy.\nFirst of all, federation requests don\u0026rsquo;t work through cloudflare\u0026rsquo;s esoteric proxy bullshit, so you have to be on DNS only. Its not as if anyone can hack me, but if you wanted to get a pretty accurate location of where I live, you can do that now I guess. Then there\u0026rsquo;s the not-so-obvious server settings that are basically required if you want anything to work, dynamic_thumbnails = true being necessary if you have any icons ever.\nWE HATE DNS Beyond that, you have to set headers for the actual domain, and if you don\u0026rsquo;t want to reserve your main url for matrix and matrix only, you have to include .well-known path nonsense. Here\u0026rsquo;s the config for anyone interested:\nlocation = /.well-known/matrix/server { default_type application/json; add_header Access-Control-Allow-Origin \u0026#34;*\u0026#34; always; return 200 \u0026#39;{\u0026#34;m.server\u0026#34;:\u0026#34;matrix.voidarc.co.uk:443\u0026#34;}\u0026#39;; } location = /.well-known/matrix/client { default_type application/json; add_header Access-Control-Allow-Origin \u0026#34;*\u0026#34; always; return 200 \u0026#39;{\u0026#34;m.homeserver\u0026#34;:{\u0026#34;base_url\u0026#34;:\u0026#34;https://matrix.voidarc.co.uk\u0026#34;}}\u0026#39;; } BOTH paths are required for any modern client to be able to federate. In the docs they list the second path as unnecessary, but almost no modern client will accept federation unless the second path is present. At most, with only the server address, you can get private messaging, but you won\u0026rsquo;t be able to join any rooms or let people join any rooms on your server.\nJust for completeness, this is the header config for the actual matrix domain. This domain should proxy pass to whatever endpoint hosts the /_matrix/ path.\nclient_max_body_size 100M; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $host; proxy_set_header Access-Control-Allow-Origin: *; Important also to note that a generic cloudflare origin cert (like the default *.example.com, example.com cert with an origin CA) will NOT work for matrix. Most other homeservers will ping your server, and then refuse to accept the return packet with a 402 or something because it hasn\u0026rsquo;t been signed against by the actual FQDN. This is simple enough to fix with letsencrypt, just make sure the cert has the same address as whatever you put as the public address in synapse\u0026rsquo;s config file.\nClients and you Matrix is a protocol, not a product. That means anyone can make a new way of interfacing with the protocol, ie a client, and use that to communicate with any other client. It\u0026rsquo;s as simple as that.\nSynapse is just the server, it provides the protocol endpoints needed to use matrix, but no actual user-facing interface. To actually message people, you need a client. Once again, the most popular is whatever matrix.org recommends, and that happens to be element. Element is shit, imo. It looks bad, it\u0026rsquo;s bloated, and the desktop version is just a glorified webapp. It also requires either hosting a really heavy service yourself, or relying on someone else\u0026rsquo;s server to stay up. Both pointless options if you want to be decentralised.\nThe best clients are fully local, and the most minimal is iamb. Vim bindings, fully tui, no mouse support whatsoever. It\u0026rsquo;s what I choose to use in my config, so I have to glaze it. Then there are more esoteric options, like commet, which has a great mobile client, mirroring that of old school discord, but uses literally the same ui on desktop for some reason. It also does some funky shit when it comes to authentication and cross signing, and has very nearly deleted all my devices\u0026rsquo; authentication a few times. I should probably explain cross signing now, huh?\nCross signing is also a pain I didn\u0026rsquo;t know about cross signing when I first use matrix, because there was literally nothing saying you had to be careful about it. As I said, matrix supports end to end encryption (e2ee from here), which means that you need some way to encrypt the messages end to end. Take whatsapp as an example, your signing keys are held permanently on the mobile app, and when you link a device, that device gets access to your keys, so you can read your messages. These keys are also the reason that it\u0026rsquo;s a pain in the ass to move whatsapp to a new device, no matter how many wizards they present you with, and also why you can\u0026rsquo;t log into whatsapp on multiple phones at once. I\u0026rsquo;m safe in assuming that whatsapp rotates the keys regularly, on a local timer, and then presents whoever you\u0026rsquo;re messaging with the public key, and, to prevent sending the pubkey with every message, gives the pubkey an expiry matching up with when the next key swap is. This is what\u0026rsquo;s known in the DNS world as a TTL, or time to live. If another device logged in as the same user was using an old key, no messages sent from that device would be able to be decrypted by the recipient, and no sent messages would be able to be read either.\nYou can think of the primary logged in device as the \u0026ldquo;root device\u0026rdquo;, acting as the source of truth for all other logged in devices. When you first log in, most clients will ask you to verify. You put in a passkey and out comes a shiny recovery key that you will almost certainly lose or forget about. If you\u0026rsquo;ve ever used a crypto wallet, it\u0026rsquo;s the same concept. If you forget your password, you have an absolute way to get all your money back, just that instead of money it\u0026rsquo;s messages. The difference here is that only the session that gave you the recovery key, or any sessions verified against it, will accept that recovery key. If you log out of your root session without verifying any other devices, all the encrypted messages sent from that client basically just vanish.\nYou verify all other devices through the root device, and if you log out of the root device, you can choose another root device by putting the recovery key into another device that was previously verified. Simple, right? This song and dance of root devices and ssl is how matrix manages to keep authenticity, unlike irc which was almost completely anonymous, while also not needing a user to hand over their email to some big company if they don\u0026rsquo;t want to. Just don\u0026rsquo;t log out of your root device, or at the very least, remember which device that even is. (I dont remember mine)\nThe only downside of this mutual verification nonsense is that the keys can\u0026rsquo;t be rotated nearly as easily. Of course, modern SSL kind of removes the need for that, but if you wanted to rotate your keys, it would take far more effort than literally any other chat platform.\nDecentralised Moral of the story Matrix is a pain in the ass, but if you aren\u0026rsquo;t hosting it yourself, it\u0026rsquo;s a great way to talk to other people that also don\u0026rsquo;t like big evil companies.\nI don\u0026rsquo;t like big evil companies!! Text me at @admin:voidarc.co.uk\nAlso join the voidarc official matrix server at #space:voidarc.co.uk. You know how it works, you deserve it. If you join through this, tell me so that I know people actually read this blog lol. Byee\n","permalink":"https://blog.voidarc.co.uk/blog/2026-10-05-matrix-is-a-pain/","summary":"\u003ch1 id=\"matrix-in-general\"\u003eMatrix in general\u003c/h1\u003e\n\u003cp\u003eMost chat platforms have one signing server, which if you think about it is like the internet having one dns server. If discord goes down, you\u0026rsquo;re kinda fucked. Matrix solves this through communism.\u003c/p\u003e\n\u003ch2 id=\"homeservers-and-awayservers\"\u003eHomeservers and awayservers\u003c/h2\u003e\n\u003cp\u003eHomeservers are just servers. On servers you can host users and rooms, and through special properties, rooms can be voice chats or spaces. Pretty simple stuff. The biggest one is, obviously, matrix.org, because signing up is free. Matrix.org also allows free hosting for spaces, the equivalent of discord servers in this context. Spaces are just rooms with special parameters, but we can get to that in a minute. Finally, matrix.org manages federation with other servers. Federation can be oversimplified into lots of encrypted API calls that result in profile information and messages being validated and fetched from a remote homeserver.\u003c/p\u003e","title":"Matrix is a pain"},{"content":"This blog Is just for me ranting. But, because I don\u0026rsquo;t have a life, I obviously needed to overengineer it. The concept is simple. Type into a box, press publish, and have whatever you typed show up somewhere else with nice formatting. Come on, wordpress had this down like 15 years ago. The implementation, however, is far from simple.\nCMS (Content management sucks) Before, on my previous garbage blog that I never uploaded to, I didn\u0026rsquo;t bother with a content management system. I would just write in neovim and then push it to git so that the blog updated. This was a shit system, because it meant that there was extra setup for writing for the blog. As soon as neorg (the markdown superset I was using) stopped working after 0.12, the blog was no more. I didn\u0026rsquo;t realise at the time, but the site generator I was using literally just flattened the neorg structure into markdown before converting it to HTML, which kind of defeated the purpose of using neorg in the first place.\nTherefore, I switched to markdown. Markdown, being markdown, is more widely supported and therefore better. That\u0026rsquo;s just how the internet goes. Also, there\u0026rsquo;s literally no neorg feature other than indenting (which it did through lies and deceit anyway) that isn\u0026rsquo;t just in markdown anyway. Not that I was using any of them anyway, I literally only use titles and code blocks. lol.\nIn order to remove the friction of having to use nvim for anything other than programming, you know, the thing it\u0026rsquo;s made for, I decided that, like every service ever, I needed a web interface. There are plenty of those, take Wordpress or any of its forks for instance. You can log in and write articles on the same site that you read them on, it\u0026rsquo;s a perfect system. There\u0026rsquo;s no limitation on being on a computer with a specific version of a niche cli text editor in order to write something (I\u0026rsquo;m still salty about neorg ok), which, in theory, means that writing articles should be less of a hassle. Of course, I wasn\u0026rsquo;t about to use Wordpress, because fuck the Wordpress foundation. Who do you think I am? That\u0026rsquo;s right, a loser. Enter Decap.\nDecap what? Decap, or Netlify CMS, is adware garbage in my opinion. The parent company, Netlify, hence the name, is one of those predatory server hosting companies that hide their bad practices and awful business in general behind pretending to contribute to open source. Think Linode and Hetzner. Or the Wordpress foundation. Fuck the Wordpress foundation. Anyway, Decap CMS.\nThe concept is simple. Provide it with some kind of git api, and a repo to commit to, and it\u0026rsquo;ll manage all the markdown and media files within. This would allow someone to, theoretically, write articles on a web interface and publish them to a blog, or something. Crazy concept, I know. The only reason I\u0026rsquo;m not using it right now is because there wasn\u0026rsquo;t a dark mode. I\u0026rsquo;m not joking. Sure, Netlify didn\u0026rsquo;t document half of the install process because their server hosting platform just so happens to do it automatically, but I\u0026rsquo;m not writing a whole ass article on a shit looking web interface with an #FFFFFF background. That and Netlify is a scummy company, whatever.\nCMS but better Sveltia, probably written in svelte (not that I checked), is exactly the same project but better. It looks better, it performs better, but it\u0026rsquo;s actually fully opensource with a GPLv3 license and actual documentation. It\u0026rsquo;s the sway to Decap\u0026rsquo;s i3, and in the same way, is supposed to be a drop in replacement. Replace one line in the html file and you\u0026rsquo;ve installed it. Did I mention that these kind of CMSs are built from javascript files instead of being actual webpages? Weird.\nSveltia DEFAULTS to dark mode, which means that\u0026rsquo;s the one I\u0026rsquo;m using forever. I could theme it to be all catppuccin like everything else in my life, but I\u0026rsquo;m too lazy. There are limits to my joblessness, ok? The way that sveltia works is through a simple config file, defining the frontmatter of different \u0026ldquo;collections\u0026rdquo; of markdown files. Collections are just folders, like if you had a blog folder and a project folder. Frontmatter is where you can define stuff like the description and publish date of an article, and whether its a draft or not. If you want to see what I\u0026rsquo;m on about, look at the source for this site here.\nOnce you have all of your awesome articles, you have to present them to the rest of the world, which is where options broaden a bit.\nBlog sites are stupid There are two halves to a good blog setup. The generator and the theme. The generator is the main limiting choice, and often the most important one. Some generators will support every possible feature of markdown (I would have latex support if I could be bothered to enable it), whilst some generators will only support text, in order to be lighter and faster. I chose the middle of the road newbie option, Hugo, because it was like 3 in the morning and I don\u0026rsquo;t do much critical thinking.\nHu-goes there?? Bad pun I know. Hugo is written in go and under the Apache 2 license. Open source, good shit. It also has a massive and very active community, having about 90k stars on github. That means there are lots and lots of themes available, but we\u0026rsquo;ll get there. Hugo requires you to run a command in order to rebuild the site, which means that the actual \u0026ldquo;site layer\u0026rdquo; is seperate from the CMS. Why they wouldn\u0026rsquo;t just merge the two functions into one, I didn\u0026rsquo;t get at first, but then realised there isn\u0026rsquo;t a backend to the CMS at all. Figures.\nMy solution was my glorious saviour n8n. By making gitea trigger a webhook every time that the repo is pushed to, I can run a command on my server that rebuilds the site. Nginx doesn\u0026rsquo;t care if the files are updated, so, as long as cloudflare doesn\u0026rsquo;t do any stupid css caching nonsense, the site updates basically in real time. Pretty cool, huh? But hugo doesn\u0026rsquo;t know what to do with any of my files if I don\u0026rsquo;t provide a template, or a theme, that dictates how things are laid out.\nHugo theming and such Hugo is not a blog framework. It\u0026rsquo;s more of a multipurpose site generator, for sites that aren\u0026rsquo;t big or complicated enough to need javascript. That means that there are too many hugo themes to count, and that if you put one next to another, you would hardly be able to tell that they were both made by the same generator. Of course, there are ways to implement javascript functionality into hugo sites, like implementing comments, but I don\u0026rsquo;t care what people have to say about my work, so I chose the most minimal one I could find.\nThe blog you are reading right now, as it so kindly says in the footer, is using the papermod theme, which is regarded as the most minimal blog template you can get while still looking good. I changed the colors to match the rest of my life, but other than that, the rest of the site\u0026rsquo;s features are configured purely through markdown and toml alone. Pretty cool, right? There are more features I could be using, sure, but like, I don\u0026rsquo;t care. This is good enough for ranting at least. Now back to editing Youtube videos. Bye!\n","permalink":"https://blog.voidarc.co.uk/blog/2026-09-22-how-this-works/","summary":"\u003ch1 id=\"this-blog\"\u003eThis blog\u003c/h1\u003e\n\u003cp\u003eIs just for me ranting. But, because I don\u0026rsquo;t have a life, I obviously needed to overengineer it. The concept is simple. Type into a box, press publish, and have whatever you typed show up somewhere else with nice formatting. Come on, wordpress had this down like 15 years ago. The implementation, however, is far from simple.\u003c/p\u003e\n\u003ch2 id=\"cms-content-management-sucks\"\u003eCMS (Content management sucks)\u003c/h2\u003e\n\u003cp\u003eBefore, on my previous garbage blog that I never uploaded to, I didn\u0026rsquo;t bother with a content management system. I would just write in neovim and then push it to git so that the blog updated. This was a shit system, because it meant that there was extra setup for writing for the blog. As soon as neorg (the markdown superset I was using) stopped working after 0.12, the blog was no more. I didn\u0026rsquo;t realise at the time, but the site generator I was using literally just flattened the neorg structure into markdown before converting it to HTML, which kind of defeated the purpose of using neorg in the first place.\u003c/p\u003e","title":"How this works"},{"content":"Oculus and You For the longest time, the Oculus ecosystem has been a closed loop. This is bullshit, fuck you meta. The first party closed source Oculus link app is windows only, so for us losers who don\u0026rsquo;t want their data stolen over on linux, it was third party or go home. Obviously, there\u0026rsquo;s nothing worth any money on the meta store, and I didn\u0026rsquo;t want to use the Oculus link app anyways, but for ages it was literally the only option. If you were on linux and wanted to play your \u0026ldquo;legally purchased\u0026rdquo; copy of Beatsaber + ALL DLC BUILD v2026.08.04, you were flat out of luck. I own a quest 2, I bought it the week it came out, and that was so long ago that I was still using windows. It\u0026rsquo;s so long ago, in fact, that I still call it an Oculus Quest, because that\u0026rsquo;s the logo of the company on the front of my headset. We miss you, Oculus.\nFrom the instant I connected to pcvr, I could feel that SteamVR was the superior option. Mostly because there wasn\u0026rsquo;t an easy way to add cracked games to the Oculus home launcher. But I still had to connect to Steam through Oculus, There was always a middleman. Every time I put on my headset, I had to wait for Oculus to do it\u0026rsquo;s shit before I could launch SteamVR and get on with my life. Not to mention the lackluster Quest interface back in those days (even though I think the modern one is shittier because now you have to be online to access apps from unknown sources, which doesn\u0026rsquo;t even make sense). Anyway, my point is that the Oculus link app, probably the slowest and most useless app on my PC at the time, was the most integral part of my setup. Without that, there was no PCVR.\nAnd then I switched to linux.\nThe Olden Days I switched to linux over a holiday on my laptop, just as a taster, which meant that I couldn\u0026rsquo;t play VR at all. When I got back, I didn\u0026rsquo;t touch my headset until I was well and truly free from anything with microsoft\u0026rsquo;s name on it. If the school computers didn\u0026rsquo;t run windows (badly, I\u0026rsquo;ll admit), I wouldnt\u0026rsquo;ve touched microslop anything for well over six months by the time I was itching for some beatsaber. I looked on steam first, because obviously, and saw that SteamVR was linux native, so I installed it immediately.\nI then searched for something like \u0026ldquo;Oculus link arch linux\u0026rdquo;, which I thought was innocent enough. The first result came back as a Reddit post (this was long long long before the time of AI overview, even before chatgpt at all I believe), with a title along the lines of \u0026ldquo;is there really no way to get Oculus link on linux?\u0026rdquo;. Foreboding. I ignored it for the moment and scrolled down until I came to the Oculus download page, which presented me with one harrowing option: \u0026ldquo;Download for Windows (.exe)\u0026rdquo;. No linux option. Devastating.\nI clicked on the Reddit post, which presented me with a few thousand comments saying that there wasn\u0026rsquo;t a way to get cable PCVR working without a SteamVR native headset. No Oculus support at all. Scrolling down a bit further, there were some people shilling a wireless streaming app, ALVR, but I was skeptical at best. I was deep into VR youtube at the time, and combined with my experience with the absolutely terrible Oculus Air Link, \u0026ldquo;wireless VR\u0026rdquo; didn\u0026rsquo;t exactly pique my interest.\nI looked around a bit more, tried to run it through wine, which someone on some github thread somewhere had said worked \u0026ldquo;good enough\u0026rdquo;, but only with some specific kernel options and a dedicated network interface or something, but to no avail. There was no Oculus Link on linux.\nALVR, etc. You have to remember, this time period was the wild west for VR. The phrase \u0026ldquo;metaverse\u0026rdquo; was only used to refer to movies and sci fi. Meta was still called Facebook. I was basically an early adopter. The comparison between the Quest 2 and Steam Frame is almost as distant as the one between the first or second samsung fold and the Iphone duo. That is to say, nobody was interested in wasting their time reverse engineering the Link protocol just to port it to linux. And so, the only option was wireless.\nWithout some dodgy ADB commands, which worked worse than no cable at all in most cases, the only \u0026ldquo;supported way\u0026rdquo; to play PCVR on linux was ALVR, wirelessly. As far as I can remember, in the early days it used a wireless ADB debugging connection (this was before meta locked developer mode behind having a dev account. Fuck you meta) to hook into a partner apk on the quest, allowing it to send and decode a video stream. It was highly inefficient, slow, looked like shit, and had enough latency to make sure that you couldn\u0026rsquo;t hit more than 3 blocks in a row on any moderately hard song. I\u0026rsquo;m taking like 40ms here. If someone was watching youtube in the other room, that could spike to 150 easily.\nBut that was the only option, unless all you wanted to play was bonelab with mediocre graphics. However, ALVR got better over time, like most foss projects, and figured out a way to get peer to peer networking, removing the ADB latency altogether. That made it \u0026ldquo;playable\u0026rdquo;, but the resolution still needed to be heavily reduced for you to be able to play anything for a reasonable time without throwing up.\nThen I stopped using VR for a while. As in like a year. I accidentally erased all my games, too, so if I wanted to play beatsaber, I would have to re-download it and hook it up to steam and it was a whole thing that took ages because I still had slow internet. Once upon a time it would take me literal days to download a 20gb game. When I had returned to the VR scene, mostly because of the release of some game or another (pretty sure I had seen a VTOL VR video and was immediately hooked), wireless VR had taken another step in the right direction.\nWivrn or something Steam link supposedly worked for VR games by this point. I had used it on the quest before to play satisfactory on a 200\u0026quot; screen, which was fun, but apparently VR support was only on windows, with \u0026ldquo;linux coming soon\u0026rdquo;, as is standard. Important to mention that this was before the steam deck even existed, so it made sense for valve not to care as much about linux support as they do now. But, because valve isn\u0026rsquo;t a shitty company (cough cough meta cough), the code they were using to interface with SteamVR was public to a certain extent. That meant that some insane individuals reimplemented the whole thing and put it under GPLv3. This was wivrn.\nWith minimal fiddling, you could get full resolution (at least 80%) with an average of 10ms latency. You could actually play beatsaber on a quest without installing windows! It helped to turn down the graphics settings, but other than that, VR was fully functional, wireless, and with no oversight from meta at all!\nThen I stopped playing VR again.\nThe actual interesting bit Recently, I decided I wanted to play boneworks. I suddenly realised that I had never played it, and didn\u0026rsquo;t want to miss out on the experience, despite the fact that the game came out like 7 years ago now. So, I charged my quest and opened the wivrn app, like I remembered doing the last time I wanted to play a VR game. But, on my computer, there was no wivrn app to be found. I chalked that up to having messed about with my nix config, so I made a module for it and opened it up. While my computer was rebooting, though, in the app menu on my quest, I spotted the steam link icon, just sitting there. So I decided to try it.\nIt worked flawlessly. Other than my headstrap snapping halfway through the playthrough, I can report that boneworks is still one of the best VR games there is. All wirelessly, directly to SteamVR. It was incredible! The latency was still in the high 20s, a far cry from the 2 or 3ms you would get if you used a cable, but definitely playable. Not beatsaber playable, but I could kill a few nullmen without too much issue.\nOnce, when I opened the app on the headset, a popup appeared. A system popup, the kind you just agreed to just so it would leave you alone. It said something like \u0026ldquo;Allow SteamVR to access devices connected over USB\u0026rdquo;, but I paid it no mind and moved on with my life. Until I wanted to play beatsaber. It got me thinking. Previously, the USB on the quest had been reserved for charging and official meta stuff, hence the need for ADB and developer mode, so surely I couldn\u0026rsquo;t just play SteamVR through it, right? Right??\nWrong. Just in case, I turned the headset\u0026rsquo;s wifi off, plugged in my old dusty link cable, and pressed connect. 4ms latency on average. Four. Four, with a capital F. There was no noticable difference between using steam link and Oculus link, and it blew my mind. Full resolution, 72hz, at less than 10ms of delay. True PCVR was finally possible. But there was a catch. Well not really, but there kind of was\nHow to fix the network issues In the logs, every 30 seconds or so, it would cite a network reset, and the video would freeze for a second or two. This would, first and foremost, cause you to fail whatever beatsaber level you were playing, and secondly, was really annoying. My first instinct was that it was USB autosleeping, I had had problems with that in the past, but it turns out it was simpler than that. NetworkManager.\nFixing it Hi future me, you\u0026rsquo;re probably here because you forgot the command that lets you play beatsaber. How sad. You loser.\nBasically, NetworkManager was managing the interface, and it polled it every so often, causing the aforementioned hitch in the video stream. You can fix it by doing the following\nRun ip a with the headset connected to SteamVR. Take note of the interface that\u0026rsquo;s at the bottom of the list, starting with enp, altname starting with enx Use the following command to prevent NetworkManager from fucking with the interface: sudo nmcli device set enp11s0f3u4i3 managed no And you can now run SteamVR over a cable on linux. You\u0026rsquo;re welcome.\nMoral of the story Fuck meta.\n","permalink":"https://blog.voidarc.co.uk/blog/2026-09-20-steamvr-works-over-a-cable-o/","summary":"\u003ch2 id=\"oculus-and-you\"\u003eOculus and You\u003c/h2\u003e\n\u003cp\u003eFor the longest time, the Oculus ecosystem has been a closed loop. This is bullshit, fuck you meta. The first party closed source Oculus link app is windows only, so for us losers who don\u0026rsquo;t want their data stolen over on linux, it was third party or go home. Obviously, there\u0026rsquo;s nothing worth any money on the meta store, and I didn\u0026rsquo;t want to use the Oculus link app anyways, but for ages it was literally the only option. If you were on linux and wanted to play your \u0026ldquo;legally purchased\u0026rdquo; copy of Beatsaber + ALL DLC BUILD v2026.08.04, you were flat out of luck. I own a quest 2, I bought it the week it came out, and that was so long ago that I was still using windows. It\u0026rsquo;s so long ago, in fact, that I still call it an Oculus Quest, because that\u0026rsquo;s the logo of the company on the front of my headset. We miss you, Oculus.\u003c/p\u003e","title":"SteamVR works over a cable :O"},{"content":"About me I\u0026rsquo;m an anonymous linux user who has a youtube channel. That\u0026rsquo;s probably why you\u0026rsquo;re here, trying to hack me or something. I could live next door to you and you would never know. I\u0026rsquo;ll just leave a few things here, if you have some reason to talk to me then leave it in my email (it\u0026rsquo;s on the main page if you want)\nThe Channel and Blog I started it on a whim. There\u0026rsquo;s no deeper reason. Yes, I\u0026rsquo;m a drama student, but there\u0026rsquo;s not really a connection or reason beyond that. While you\u0026rsquo;re thinking about it, like and subscribe!!!!\nI digress.\nThis is a place for cool stuff I do that isn\u0026rsquo;t really deserving or interesting enough for a video. It\u0026rsquo;s not that I\u0026rsquo;m trying to optimise viewer retension (have you seen my videos?), it\u0026rsquo;s just that I can\u0026rsquo;t justify making a whole video on a small sidequest that I didn\u0026rsquo;t document or record. That\u0026rsquo;s what this is for. Little cool nix tweaks. My vr setup. My new laptop. Shit like that, things that have already happened where the only documentation is my mind. If I make some adjustment to my bar or change my terminal, this is probably where you\u0026rsquo;re gonna hear about it.\nAI use No AI will ever make it onto here. I promise. If there is eventually an AI running this, come to my house and behead me or something. Just as I edit all my videos by hand, I\u0026rsquo;ll write all of these articles. I might even let viewers upload if I can figure out some better way to let gitea do that. Might be a bad idea, though. For now, I always have the community tab lol.\nAnyway. No AI.\n","permalink":"https://blog.voidarc.co.uk/about/","summary":"\u003ch1 id=\"about-me\"\u003eAbout me\u003c/h1\u003e\n\u003cp\u003eI\u0026rsquo;m an anonymous linux user who has a youtube channel. That\u0026rsquo;s probably why you\u0026rsquo;re here, trying to hack me or something.\nI could live next door to you and you would never know. I\u0026rsquo;ll just leave a few things here, if you have some reason\nto talk to me then leave it in my email (it\u0026rsquo;s on the main page if you want)\u003c/p\u003e\n\u003ch2 id=\"the-channel-and-blog\"\u003eThe Channel and Blog\u003c/h2\u003e\n\u003cp\u003eI started it on a whim. There\u0026rsquo;s no deeper reason. Yes, I\u0026rsquo;m a drama student, but there\u0026rsquo;s not really a connection or reason\nbeyond that. While you\u0026rsquo;re thinking about it, like and subscribe!!!!\u003c/p\u003e","title":""}]