20 Crosh Terminal Commands All Chromebook Users Should Know
My screen went completely dead. Just a terrifying, backlit black void staring back at me while three agency executives sat across the conference table, waiting for the Q3 projection numbers. It was 2019. I was pitching a massive contract, relying entirely on my trusty Asus Chromebook Flip, and the graphical interface just decided to take a permanent vacation. Panic? Oh, absolutely. My stomach basically dropped through the floorboards.
I mashed the keyboard. Nothing. I swiped the trackpad. Still nothing. Then, out of pure muscle memory from my days messing around with obscure Linux distributions, I hit three keys simultaneously: Ctrl + Alt + T. Suddenly, a stark, black browser tab snapped open with a blinking cursor. The Chrome OS Developer Shell—affectionately known as Crosh—had arrived to save my professional life.
Most people treat their Chromebooks like glorified web browsers. You open the lid, you type things into Google Docs, you watch Netflix, and you close the lid. Simple, right? But when you actually peel back the shiny, consumer-friendly veneer of Google’s operating system, you realize it’s essentially a heavily fortified Linux build wearing a very polite, minimalist sweater. And under that sweater is a wildly powerful command line interface.
You don’t need to be a grizzled system administrator to get value out of this hidden terminal. Knowing your way around Crosh is the difference between blindly guessing why your machine is acting up and actually diagnosing the problem with surgical precision. I spent years deploying fleets of these devices for schools and corporate teams, and the terminal was my daily workspace.
Let’s skip the fluffy introductions. We are going to dig straight into the actual, practical commands that will pull you out of a jam. Here are twenty Crosh commands every single Chromebook user needs to have burned into their brain.
The Diagnostic Heavyweights: Battery and Hardware
Hardware fails. It is an unavoidable fact of computing. Batteries degrade, memory modules get weird, and storage drives slowly march toward their inevitable demise. Before you throw your machine away or call tech support, run these.
1. battery_test [seconds]
This is the absolute holy grail of Chromebook troubleshooting. When someone tells me their laptop keeps dying randomly, I don’t look at the little battery icon in the bottom right corner. That icon lies. I open Crosh and type battery_test 60.
What this does is monitor your battery’s discharge rate over a specific period—in this case, 60 seconds. But the real magic is the second line of the output it spits back at you: Battery health.
You will see a percentage. If you bought a used Pixelbook off eBay and run this command only to see “Battery health: 68%”, you are holding a ticking time bomb. Anything under 80% means the chemical integrity of the lithium-ion cells is severely compromised. I once diagnosed a massive phantom drain issue on a batch of Acer C720s back in 2016 just by running this command and watching the discharge rate absolutely skyrocket while the screen brightness was turned all the way down. Run it. Know your number.
2. battery_firmware info
Sometimes the battery itself is totally fine, but the tiny micro-controller telling the operating system how much juice is left gets confused. It happens more often than you would think. Typing battery_firmware info pulls the raw data directly from that controller.
You will see cycle counts, voltage stats, and the manufacturer details. If the voltage numbers look erratic or the cycle count reads zero on a machine you have used for three years, your firmware is hallucinating. A hard reset usually fixes it, but you wouldn’t know to do that without checking here first.
3. memory_test
Chrome eats RAM. We all know it. Opening forty tabs of heavy web applications will bring even the beefiest machines to a crawl. But what if your Chromebook is crashing with only two tabs open?
Just type memory_test and hit enter. Fair warning—this is not a quick process. The system will start aggressively writing and reading data to your physical memory modules to find bad sectors. Go make a cup of coffee. If it comes back with errors, your physical RAM is failing. Because memory is soldered directly onto the motherboard in almost all modern Chromebooks, a failure here means the motherboard is toast. It is a brutal truth, but knowing it saves you hours of pointless factory resets.
4. storage_test_1
Similar to your RAM, your internal storage (usually eMMC or a cheap NVMe drive) has a finite lifespan. storage_test_1 runs a quick, non-destructive SMART (Self-Monitoring, Analysis, and Reporting Technology) test on your drive.
It checks for read/write errors and sector degradation. I run this immediately whenever I buy refurbished hardware. If the SMART status throws a failure warning, return the device immediately. Do not wait. Do not pass go.
5. storage_test_2
Need to dig deeper? storage_test_2 is the aggressive older brother of the previous command. It runs a highly intensive, deep-dive diagnostic on the storage controller.
I rarely run this unless storage_test_1 gave me a weird, inconclusive output. It takes significantly longer, but it will uncover deep-seated sector corruption that a quick scan misses. I used this exact command to prove to a vendor that a shipment of 50 laptops had defective storage controllers right out of the box.
Network Troubleshooting: Finding the Dead Ends
Wi-Fi issues are incredibly frustrating because the graphical interface gives you basically zero useful information. “Connected, no internet” is the most useless error message in modern computing. Crosh gives you the actual data.
6. ping [domain or IP]
The oldest trick in the book, but perfectly implemented here. If a website isn’t loading, open the terminal and type ping google.com.
You are sending tiny packets of data to Google’s servers and timing how long it takes for them to bounce back. If you see “Destination Net Unreachable,” your laptop isn’t talking to your router. If you see massive time delays (like 500ms+), your connection is heavily congested. I use this constantly in hotel rooms to figure out if the captive Wi-Fi portal is blocking external traffic. Press Ctrl + C to stop the pinging, otherwise, it will just run forever and annoy you.
7. network_diag
This is a diagnostic nuke. If you type network_diag, your Chromebook will run a massive, comprehensive suite of network tests. It checks your local IP, your gateway, your DNS resolution, and your HTTPS connectivity.
Here is the catch—it doesn’t just spit the results onto the screen. It generates a detailed text file and drops it directly into your Downloads folder. Open that file. You will see a long list of tests. Just use Ctrl + F and search for the word “FAIL”. Whatever failed is your culprit. It turns a guessing game into a ten-second diagnosis.
8. tracepath [domain or IP]
Let’s say your ping command worked, but your connection is still painfully slow. Where is the bottleneck? Is it your router? Your ISP? The server itself?
Type tracepath 8.8.8.8 (Google’s public DNS). The terminal will map every single “hop” your data takes from your laptop to the destination. It will show you the exact IP address of every router it bounces through and how long each bounce took. If the delay spikes violently at hop number two, your local ISP node is struggling. If it spikes at hop number twelve, the issue is on the server’s end and completely out of your control. Stop resetting your router for no reason, right?
9. p2p_update
This one is slightly niche but incredibly cool if you manage multiple devices on the same network. Chrome OS has a peer-to-peer update feature. Instead of every single Chromebook in a classroom or office downloading the exact same 500MB update file from Google’s servers and destroying your bandwidth, they can share the update locally.
Typing p2p_update lets you toggle this setting and check its status. If you are on a metered connection or a horrible rural DSL line with multiple Chromebooks in the house, enabling this is a total lifesaver.
System Internals: What Is Actually Going On?
Sometimes the issue isn’t hardware or networking. Sometimes the operating system itself is just choking on a bad process or a weird kernel bug.
10. top
Forget the graphical task manager. If your fans are screaming and the chassis is burning your lap, open Crosh and type top.
This brings up a live, continually updating table of every single process running on your machine. It looks intimidating, like something out of the Matrix, but you only need to look at two columns: %CPU and %MEM.
I once had a client whose machine was practically melting. We ran top and saw that a poorly coded grammar-checking extension was consuming 98% of the CPU cycles in the background. We killed the process ID (PID), removed the extension, and the machine cooled down instantly. Press q to exit the view.
11. uname -a
If you are posting on a support forum asking for help, the very first thing the experts will ask you is what kernel version you are running. Don’t dig through the graphical settings menus.
Type uname -a. It instantly prints out the Linux kernel version, the exact system architecture (ARM vs x86), and the build date. It is a one-second copy-paste job that gives whoever is helping you the exact context they need.
12. dmesg
This is the kernel ring buffer. Basically, it is the master diary of everything the hardware and the core operating system have said to each other since you turned the machine on.
Type dmesg. A terrifyingly fast wall of text will fly up your screen. You will want to pipe this into a readable format or scroll through it carefully. Why use this? USB devices. If you plug in a weird external hard drive or a cheap USB-C hub and it doesn’t work, run this command. The last few lines will tell you exactly why the kernel rejected the device. Usually, it is a power draw issue or a missing driver.
13. vmc
If you use Linux apps on your Chromebook (Crostini), you are running a virtual machine. Sometimes, that virtual machine completely crashes. You click the terminal icon, and it just spins forever.
Instead of rebooting your whole laptop, open Crosh and use the vmc command. Typing vmc stop termina brutally forces the virtual machine to shut down. Then type vmc start termina to boot it back up clean. I have to do this at least twice a month when I am messing around with heavy Linux development environments that lock up the container.
14. vsh
Following up on the previous command, maybe you don’t want to kill the virtual machine. Maybe you just want to get inside it bypassing the normal graphical terminal app.
Type vsh termina. You are now instantly dropped into the shell of your Linux container directly from Crosh. It is a backdoor. If the normal Terminal app icon is broken or missing after a weird update, this command gets you back into your Linux files so you can back them up before doing a powerwash.
15. bt_console
Bluetooth on Chrome OS has historically been… moody. If your wireless earbuds are refusing to pair, the graphical Bluetooth menu will just helplessly spin a little circle at you.
Type bt_console. Your prompt will change to [bluetooth]#. You are now inside the raw Bluetooth daemon. From here, you can type scan on to see the raw MAC addresses of everything transmitting nearby. You can type info [MAC address] to see exactly why a device is failing to connect. I used this to figure out that a cheap pair of off-brand headphones was actively rejecting the pairing request because it was stuck looking for an old iPhone.
Advanced Diagnostics and Obscure Utilities
These last few commands are for specific, weird scenarios. You won’t use them every day, but when you need them, nothing else will work.
16. packet_capture
This is heavy duty. packet_capture literally sniffs the raw data packets flying in and out of your Wi-Fi card and saves them to a .pcap file.
You probably shouldn’t run this at a local coffee shop—unless you enjoy getting weird looks from the barista and potentially violating their terms of service. But if you are testing a home network to see if a specific smart home device is phoning home to weird servers in the middle of the night, this command captures the raw evidence. You can then open the resulting file in a program like Wireshark on another machine to analyze the traffic.
17. set_time
If your Chromebook’s battery completely, utterly dies and sits in a drawer for six months, the internal hardware clock will reset. When you finally charge it and turn it on, the Wi-Fi will refuse to connect. Why? Because the date thinks it is January 1st, 1970, and every single website’s SSL security certificate will instantly reject your connection as invalid.
You can’t fix the time in the settings because the settings need the internet to sync the time, but the internet won’t connect because the time is wrong. It is a maddening catch-22.
Open Crosh. Type set_time followed by the current date and time string. You manually force the system clock to reality, the SSL certificates validate, and your Wi-Fi connects. Boom. Problem solved.
18. rlz
This one is purely about privacy and understanding what your machine is doing. RLZ is a tracking string Google uses to measure promotional campaigns. It tells them where the device was bought and when it was first activated.
Typing rlz allows you to view these tracking pings. It is mostly diagnostic, but if you are highly privacy-conscious and want to know exactly what telemetry your machine is holding onto regarding its initial activation, this dumps it out for you.
19. upload_crashes
When your Chromebook hard-crashes, it generates a core dump file. Usually, it waits until you are on a stable, unmetered connection to quietly send this data to Google’s developers in the background.
If you are actively working with a support technician on a recurring bug, they might not want to wait for the automatic trigger. Typing upload_crashes forces the system to immediately package up all recent crash logs and fire them off to the servers right then and there. It speeds up the support ticket process immensely.
20. exit
You are done poking around. You found the memory leak. You tested the battery. You forced the virtual machine to restart. How do you get out?
You could just click the little ‘X’ on the browser tab like a normal person. But if you want to keep your hands on the keyboard and maintain your flow state, just type exit and hit enter. The shell closes instantly.
GUI vs. Terminal: The Diagnostic Reality
A lot of people push back when I tell them to learn command-line tools. They argue that Google built a perfectly good settings menu. Sure, they did. But graphical user interfaces are designed to hide complexity. They smooth over the rough edges so the average consumer doesn’t get confused.
When you are troubleshooting, you need the complexity. You need the raw data. To make this painfully clear, look at the difference in how the system treats you depending on the interface you choose to use.
| Diagnostic Area | What the GUI Tells You | What Crosh Tells You |
|---|---|---|
| Battery Status | “72% – 3 hours remaining” | “Health: 84%, Discharge rate: 1.2W, Cycle count: 412” |
| Network Connection | “Connected to Wi-Fi, No Internet” | Specific DNS failure, Gateway unreachable, exact ping latency in milliseconds. |
| System Performance | The fan gets loud and everything gets slow. | Exact PID of the offending process, real-time memory allocation, CPU load averages. |
| Bluetooth | A spinning circle that never stops. | Raw MAC address rejection codes, signal strength (RSSI), protocol handshakes. |
| Storage Health | Absolutely nothing until the drive dies. | SMART sector status, read/write degradation, controller firmware errors. |
See the difference? The GUI treats you like a child who might break something. Crosh treats you like an adult who owns the hardware. Relying solely on the graphical interface for diagnostics is like trying to fix a car engine by only looking at the dashboard warning lights. You have to pop the hood. You have to get your hands dirty.
The Philosophy of the Command Line
Look, I get it. Black screens with blinking white text are intimidating. Hollywood has spent forty years teaching us that only elite hackers in dark basements use the terminal. It is nonsense.
The command line is just a conversation with your computer without the mouse getting in the way. It is direct. It is unambiguous. When you type a command, the machine doesn’t try to guess what you mean based on where your cursor is hovering. It executes precisely what you ask for.
Chrome OS is brilliant because it hides this complexity so well. You can hand a Chromebook to an eight-year-old or an eighty-year-old, and they will figure it out in five minutes. But by learning these twenty commands, you elevate yourself out of the standard user category. You become the master of the hardware.
Next time your Wi-Fi drops out during a crucial Zoom call, or your battery seems to drain impossibly fast, don’t just sigh and restart the machine hoping it magically fixes itself. Hit Ctrl + Alt + T. Ask the machine what is wrong. Read the output. Fix the actual problem.
You have the tools right at your fingertips. They are built right into the browser. Go open a tab and try battery_test 10 right now. Just see what happens. I guarantee you will learn something new about the hunk of plastic and metal sitting on your desk.