Skip to main content
zerologszerologs
About Zero Logs Analyzer
About the author

I built this for my own bike

My name is Raffaele Vitiello. I was born in Italy in 1989 and I have worked in IT since the early 2000s. Zero Logs Analyzer began as a way to read the logs of one motorcycle: mine.

Today I consult on platform engineering and SRE, under whichever label is current: DevOps, DevSecOps, AIOps, DataOps. The labels changed, the activity did not: keep the system observable, and fix what the graphs say is broken.

Nobody taught me any of it. I have always taken things apart to see how they work. For pleasure I do the same without the ticket queue.

Illustration of the author on his Zero FXS in front of a graffiti wall carrying the zerologs.bike mark

A quiet bike for Rome

I live in Rome. Getting to work meant crossing the ZTL, the restricted traffic zones in the centre, quietly. My other vehicles are loud enough to be a problem at seven in the morning. The FXS was the only one I owned that could make the trip.

I bought it in 2019 from a dealer in Rome: a Zero FXS 6.5, sold to me as a 2017. It had been registered in Italy in 2017, but the model was a 2016, which carries a different belt and a different battery. I worked that out later, myself. I put it down to a mistake rather than anything else. I rode about 10,000 km between 2020 and 2024.

The throttle cut out

In 2024 the bike developed a fault I could not live with. It charged fully. Leaving home I had to open the throttle very gently: anything more disabled the throttle grip completely. The way out was to shut it down, wait, restart, and set off slowly.

I took it back to the dealer I bought it from. I was told the throttle grip was defective. Between the part and the labour I paid 500 EUR. I rode home at full throttle for the first time in months, pleased with the repair. It cut out again as I arrived.

So I pulled the logs myself, from the battery and the bike controller. I read them, with some help from ChatGPT, and wrote up what I found: the hypotheses, the suspicious entries, the timestamps. I brought it to the dealership. What I was given to understand was that I should not have accessed the logs at all, because I might have damaged something, and the report was not accepted.

Illustration of a laptop running a Zero diagnostics session, showing a wall of log output
The logs the bike had been writing all along.

The summer

I asked them to repair it. They kept it for the summer. Some of that is the Italian August shutdown, and I understand there were also delays in talking to Zero in the United States. Eventually they called, apologetically. I was told that one of the two battery modules had caught fire and had been scrapped. They offered me 1,000 EUR off a different model.

I did not want a different motorcycle with a discount. I wanted my own bike, working.

It came back with one battery module instead of two, good for 20 to 40 km ridden gently. Several plastics were not mine either: stickers and a GoPro mount I had never fitted. I asked for my money back. I am not going to get it.

The rebuild

Illustration of the Zero FXS stripped to the bare frame, the wiring harness laid out on the garage floor
The FXS stripped to the frame during the pack and harness rebuild.

I contacted Zero Italy directly and set out the whole sequence. I met somebody there who simply helped. I am not going to name them. They are the reason the FXS still exists.

The bike moved from the two modular bricks to the single monolithic pack. That is not a swap. It meant replacing the entire cable backbone, every cable, front to back. With the frame stripped, the damaged Sevcon controller went too. It has worked properly ever since.

Illustration of the garage bench: a laptop, the controller opened up, and a tool cart beside the front wheel
The Sevcon on the bench, next to the tools that got it there.

Reading the logs

I kept reading the logs afterwards, every few weeks: cell voltages, pack temperatures, the charge curve. Nothing was wrong. I kept looking anyway. I wanted to know what a healthy bike looks like in its own records, so that I would recognise one that is not.

It also irritated me in a useful way. Gen2 logs have an open parser. Gen3 did not decode correctly with anything I could find, so the newest bikes were the least readable. I took the ring buffer apart record by record until the fields made sense. I would have done that with or without anyone else using it.

February 2026

In February 2026 I built a web app for myself. Login, upload an MBB or BMS file, get telemetry and a report back. I did not expect anyone else to use it.

Within a few days six people had registered. Then ten. I had promoted it nowhere. The referrers were ChatGPT and Claude: as far as I can tell, riders asking them how to open their Zero logs were being pointed here.

So I kept going and built the thing I had wanted from the start. Zero Logs Analyzer reads MBB and BMS binaries, Gen2 and Gen3, and serial console captures. It follows faults over time, measures real pack capacity instead of repeating the nameplate figure, charts rides and charges, groups them into trips, works out charging costs, and publishes share links you can revoke. There is also a per-bike AI chat, a public bike and battery catalog, and a Learn section.

One limitation up front: the bikes sample telemetry roughly every 51 seconds. That is coarse, no charting fixes it, and it is what the hardware gives us. The site is free, and it will stay free. The AI runs on DeepSeek, which costs a few cents per user the way this app uses it. There is also a changelog and a status page, which a garage hobby did not require. Everyone in this trade knows how that goes: you look up and you have built yourself a release process.

What it is for

The goal is that a rider can form an opinion from their own records before anyone quotes a price: not to argue with a technician, but to walk in knowing what the bike recorded. The state of the pack should stay in view, instead of being discovered on the day it stops.

The other half is know-how. What I learned taking these bikes apart is written down almost nowhere, so every error family, every pack and every quirk I have confirmed goes into the Learn section and the catalogs. This is an independent project, not affiliated with or endorsed by Zero Motorcycles, and warranty work still belongs with the dealer network. It reads what your bike already wrote and shows it to you. What to do about it stays with you.

Feedback

That is me, and that is the project. It improves when somebody tells me what is wrong with it: a file it misreads, a number that looks off, a page that makes no sense on your bike.

Send feedback from inside the app or through the contact form. I read all of it. If you would rather chip in towards the running costs, there is a page for that — optional, and it changes nothing about what the tool does.