A bit of background
Back in late 2024, we moved into our new house in the countryside. Previously, we lived in the middle of a town centre, with the only outside space we had being a balcony. However, we were now faced with the prospect of needing to manage half an acre of garden with next to no gardening experience.
Luckily, we moved in during autumn so maintaining the grass wasn’t really needed, but come spring the grass was beginning to look untidy and we couldn’t leave it any longer.
My partner was adamant that we needed a ride‑on lawn mower, but I was hesitant. Sure, it’d be fun the first couple of times, but after that it’d just be another chore, and one I didn’t think either of us were really prepared to do on the regular. That aside, ride-on mowers aren’t cheap. Even the entry models start around £1,500, so hardly a casual purchase.
From cleaning floors to cutting grass
I’ve had robot vacuums for many years and had seen robot lawn mowers around, but was never something I had needed until now. I knew they were still in their infancy compared to vacuums, but as always, I was keen to avoid any manual work so I turned to Reddit for some research.
Now, I should probably mention that our garden isn’t particularly straightforward. It’s on an incline, isn’t level in a lot of places and there are quite a few trees and obstacles it needs to avoid, so these were things I had to consider when deciding which mower was best.
There are two options for robot lawnmowers: what I’d call the ‘old school’ method, which is essentially burying a wire around the perimeter of the garden so it knows its boundary, or the modern method using GPS. The first option didn’t appeal to me – firstly, digging a wire around the perimeter sounded like a lot of work, and secondly, there were a lot of stories of it mowing through the wire and then losing track of where to go.
Having decided on the GPS option, I did my research and discovered the Mammotion Luba 2 X. Whilst far from cheap (£2,099), it’s all‑wheel drive, can handle decent slopes, uses GPS for positioning, accurate to a few centimetres, and utilises cameras to help avoid obstacles. Plus, it looks pretty cool. Admittedly there were varying reviews from some people saying they’d had failures, but on the whole it looked decent.
I took the plunge and ordered it off Amazon, mainly due to their buyer protection and speedy delivery.
First impressions
It’s bigger than I expected – and heavy.
With all the parts laid out on my dining table, I started putting it together. It comes mostly assembled bar a few pieces like the camera module and the front bumper. Assembly was pretty straightforward, a few bits to clip on and the rest attach with the provided screws (and screwdriver).
I should mention the Luba relies on GPS for its location, but to get the accuracy that’s needed for spinning blades, it uses an RTK station. This is a device that you mount as high as you can with clear view of the sky. It’s essentially a fixed base station to correct the mower’s position down to a few centimetres.
Mammotion has recently launched iNavi, which is its built‑in RTK that relies on reference stations near you, but all the guidance that I’d read was that using the supplied RTK gave you the best accuracy.
I installed this on a flat roof behind my garage; luckily they provide you with a super‑long power cable so, with a bit of drilling, I was able to route the cable through the soffits and into my garage for power.
The base station installation was easier, though the initial setup is pretty finicky. I set up the charging station on my patio, and placed the robot on it. It pairs with your phone via Bluetooth, where you can then connect it to your Wi‑Fi.
I did have quite a lot of issues getting both the RTK and robot connected to my Wi‑Fi. I have 2 UniFi APs facing out across the garden and, perhaps it was to do with a shared SSID across multiple APs, but it was just refusing to connect to my IoT 2.4 GHz network. Eventually I got it connected long enough to do a software update and from there on it seemed to work.
Luckily the Luba also has a built in 4G eSIM, which comes with a free year’s subscription from new. This means that even when it’s outside of Wi‑Fi range you can still see progress and receive notifications.
Mapping the space
Here’s where things were a bit different to what I’m used to. I’m used to just sending my Roborocks out and they roam around and map the available space; with the Luba you have to drive it around the perimeter of your garden using your phone as a remote control. You can also set up multizone mapping for different areas. It does try and do it itself but, honestly, it’s a bit sensitive and it’s far quicker just to drive it around like a remote‑control car. I have strangely seen people on Reddit putting it on a sled and dragging it round the edge of their garden.
Once each garden was mapped, I then needed to create a channel. This is essentially an allowed path that the mower is able to take from the charger to the ‘work area’. Here’s my first complaint: the channels are a bit thin. Whilst setting them up is dead easy, I’ve found through use that occasionally when leaving or returning to the dock, the mower has ‘strayed’ very slightly and you can’t move it without going outside, connecting to it via Bluetooth and then controlling it manually. 99% of the time, it’s totally fine, but it’d be nice to either have the channels a little bit wider, or to be able to nudge it back over Wi‑Fi.
The first mow
I was too impatient to play around with settings, so I selected the map I wanted it to mow, set the blade height to its lowest setting, set the fastest task speed and hit go.
It was great to just see it head off and start mowing. I’ve never seen lawn lines like it – they’re perfectly straight and look fantastic. It navigated easily around trees and any debris that was in its way. In a few areas, particularly around flower beds, it did manage to get itself stuck and I had to adjust the map to compensate for this, but the results were pretty good. The other thing that struck me was how quiet it was. I’m used to hearing the neighbours mowing their grass; this is barely audible – just a slight whirring as it plods along.
Because these devices are still in their infancy, it helps to adapt your garden for it to work best. Cleaning up any areas where it might get stuck or adding barriers/no‑go zones means it can be left totally unattended to do its thing.
The one downfall that I’ve found is that the edging of the perimeter isn’t great. It tends to leave long grass around the edges and, even with adjusting the map, getting it close to the flower beds and fence edges gets a bit tricky. So every few weeks I’ll go round with a strimmer, a minor inconvenience, but in all honesty that takes less than 10 minutes, which is far less time than it would take me to mow the gardens myself!
Even Arlo doesn’t seem to mind it.
Tuning the system
Originally I had the sensitivity of the avoidance on high. I didn’t want it running into anything and chewing something up that it shouldn’t. However, I started to realise that due to my garden’s variety of grass types it was avoiding some areas due to their darker colour because it thought they were an obstacle. It was also missing large areas, leaving a bit of a patchy mess.
I researched the best settings, and found that reducing the speed to ~0.3–0.4 m/s seemed to be the sweet spot and using the chessboard setting – which means it mows twice – first vertically and then horizontally – seemed to solve those issues. It doesn’t really matter on the speed as for me personally, it doesn’t matter how long it takes to do it; it even has a headlight for nighttime running.
One thing to note is that it doesn’t do my whole back garden in one go. It will go back to charge a few times, but will manage the whole thing within 12–14 hours. It generally manages around 3 hours of mowing per charge based on my settings and terrain, and takes around 2 hours to charge.
I also did a bit of research on my grass type and realised that 20 mm is too low for my grass, so I keep it at 35 mm for a healthy lawn.
A month or so later, Mammotion also released an update that allows you to change the blade speed. I’ve found that High does the best job at ensuring a consistent cut all the way through.
The App
Overall the app is pretty sleek and intuitive to use. You’re able to customise your maps, create tasks, and check progress and status. It’s pretty straightforward to set everything up and get it working how you’d like.
One of my favourite features is definitely FPV mode, where you can stream the camera from the robot as it’s roaming around.
There’s also a manual mowing mode, so if you want to go over some missed areas without grabbing an actual lawn mower, you can act like a kid with an RC car again and control it from your phone.
However, there are a few drawbacks that I’ve found.
- Connection never succeeds on first open. I always have to close the app and reopen, even though both the robot and my phone have a strong Wi‑Fi connection.
- Notification alerts are nondescript. If the robot has got stuck, the notification says ‘the task has paused’. You then have to dig through the app and notifications to figure out what’s happened. ‘The robot is stuck’ would be far more actionable. This is the same for any error messages that it sends.
- Safety is overzealous. I’ll be the first person to say that I shouldn’t be controlling spinning blades without being able to see it, but moving the robot or helping it get unstuck (when the blades aren’t spinning) feels like something I should be able to do over Wi‑Fi and FPV, especially when it’s just returning to the dock and has nudged out of the channel.
Most of these are minor annoyances rather than actual issues, but I’m sure with time, Mammotion will continue to improve the app. Since I’ve had it, they’ve been pretty consistent with firmware updates.
Automating with Home Assistant
Now this wouldn’t be a post from me if I didn’t talk about Home Assistant. Whilst Mammotion allows you to have schedules when tasks can be run and has protections like avoiding mowing when it’s raining using the in‑built rain sensor, in my mind having just a timer isn’t ‘smart’.
Luckily, there’s a HACS integration for Mammotion that’s dead easy to set up. To avoid being logged out of the app constantly I used a spare email address and shared the robot with it so HA has its own access.
Making it truly smart
Because I have a front and a back garden, I have two tasks. The robot lives on its charger in the back garden, and I have a side gate that it needs to go through to get to the front. The robot can mow the back garden autonomously, but does require my intervention to let it out of the gate for the front garden.
My first automation was to notify me that it needs letting out of the gate:
alias: LUBA Gate Notifications - Front Garden
description: >-
Sends notifications when LUBA needs the gate opened or closed to access the
front garden.
triggers:
- entity_id: sensor.mabel_work_area
trigger: state
- entity_id: sensor.mabel_activity_mode
trigger: state
conditions: []
actions:
- choose:
- conditions:
- condition: state
entity_id: sensor.mabel_work_area
state: Front Garden
- condition: state
entity_id: sensor.mabel_activity_mode
state: MODE_WORKING
- condition: template
value_template: |
{{ trigger.entity_id == 'sensor.mabel_work_area' or
(trigger.entity_id == 'sensor.mabel_activity_mode' and trigger.from_state.state != 'MODE_WORKING') }}
sequence:
- repeat:
for_each: "{{ notify_targets }}"
sequence:
- data:
title: "{{ messages.start.title }}"
message: "{{ messages.start.message }}"
action: "{{ repeat.item }}"
- conditions:
- condition: state
entity_id: sensor.mabel_work_area
state: Front Garden
- condition: state
entity_id: sensor.mabel_activity_mode
state: MODE_RETURNING
sequence:
- repeat:
for_each: "{{ notify_targets }}"
sequence:
- data:
title: "{{ messages.returning.title }}"
message: "{{ messages.returning.message }}"
action: "{{ repeat.item }}"
- conditions:
- condition: state
entity_id: sensor.mabel_work_area
state: Front Garden
- condition: state
entity_id: sensor.mabel_activity_mode
state: MODE_WORKING
- condition: template
value_template: |
{{ trigger.entity_id == 'sensor.mabel_activity_mode' and
trigger.from_state.state == 'MODE_RETURNING' }}
sequence:
- repeat:
for_each: "{{ notify_targets }}"
sequence:
- data:
title: "{{ messages.resume.title }}"
message: "{{ messages.resume.message }}"
action: "{{ repeat.item }}"
variables:
notify_targets:
- notify.mobile_app_fran
- notify.mobile_app_wills_iphone
messages:
start:
title: 🍃 Lawn Care
message: Open the side gate — Marvin is heading to the front garden.
returning:
title: 🍃 Lawn Care
message: He’s returning from the front garden — open the gate to let him in.
resume:
title: 🍃 Lawn Care
message: He’s ready to return to the front garden — open the gate again.
mode: singleThis is a simple check of a work area being activated so I know that it’ll be waiting at the side gate. This sends a push notification to my phone asking me to let it out.
The second automation is running a schedule. It’s crucially important for it to be mowing often and only shaving off millimetres at a time, otherwise you’ll be left with clumps of dead grass that’ll leave patches over your lawn.
I settled on a schedule of:
- Monday, Wednesday, Friday → Mows back garden
- Tuesday and Thursday → Mows front garden
As mentioned, the back garden is fine to let it do its thing. If it heads towards the front garden but no one is home to open the gate, it ends up running out of charge and is unable to return to the charger without some manual intervention.
To help overcome this, the main scheduling automation checks whether my boolean of ‘House unoccupied’ is active or not. If no one is home, it doesn’t trigger the front garden mows.
alias: "Routines —\_Marvin — Mowing Days"
description: ""
triggers:
- trigger: time
at: "06:00:00"
weekday:
- mon
- wed
- fri
id: back_garden
- trigger: time
at: "10:00:00"
weekday:
- tue
id: front_tuesday
- trigger: time
at: "10:00:00"
weekday:
- thu
id: front_thursday
conditions: []
actions:
- choose:
- conditions:
- condition: trigger
id:
- front_tuesday
- front_thursday
- condition: state
entity_id: input_boolean.house_unoccupied
state: "off"
sequence:
- choose:
- conditions:
- condition: trigger
id:
- front_tuesday
sequence:
- device_id: a16741c0d2dc18cdbc04b1911759f4b9
domain: button
entity_id: 0944c23764113b186f6b12d4fac7f1ea
type: press
- conditions:
- condition: trigger
id:
- front_thursday
sequence:
- device_id: a16741c0d2dc18cdbc04b1911759f4b9
domain: button
entity_id: 592d822f64cd02d2f1798f7f1e23422a
type: press
- conditions:
- condition: trigger
id:
- back_garden
sequence:
- device_id: a16741c0d2dc18cdbc04b1911759f4b9
domain: button
entity_id: b6f3eddaa6880a20d9047a8b78a9ab1a
type: press
mode: singleThat’s all the automation I’ve set up so far. I haven’t found that it’s needed any more intervention and it runs itself most of the time.
The only slight UI‑based addition was adding a vehicle card to show the % completion of the task it’s working on and its charge status.
I did wonder whether to port this to HomeKit using a vacuum entity. However, I mainly use HomeKit as a frontend wrapper for things that might need to be manually controlled at some point – lights, curtains, etc.
Being able to see it in HomeKit wouldn’t really provide any extra benefit as all the automations are handled in HA. It would be good to see robot mower support by Apple in the future, but I’m not holding my breath.
Maintenance
This was a part that I hadn’t done a huge amount of research on so it was a bit of learn‑on‑the‑fly. The biggest part is blades. Blades need replacing or rotating regularly. Over time these dull and you’ll notice that it’s not as clean of a cut as usual. Luckily these are pretty cheap on Amazon and fairly easy to change. Mammotion does offer its own but they tend to be out of stock. The main issue I’ve noticed with replacing the blades is that the screw heads tend to get covered in dirt, making them hard to grip.
I also learned that the blades can get stuck (they’re supposed to spin freely on the screws). Removing the washers between the blade and the disc helps stop grass being wedged there, thus allowing the blades to continue to spin freely.
I tend to rotate or change the blades every 6 weeks or so. Occasionally it has lost a blade (from catching on large twigs or stones) so I’ve just done a straight replacement. The usual tell is the robot sounds a lot louder than usual as the disc isn’t balanced.
I also upgraded the discs to the newer design that Mammotion released, which feel much sturdier and apparently keep less dirt from being able to clog the blades.
Lastly, as it lives outside it does tend to get pretty dirty. I hose it off every now and then to keep it looking nice but in reality these are very low‑maintenance machines. Come winter, I’ll probably store it in the garage. It’s weather‑proof, but as with any batteries it’s better to avoid extreme temperatures.
Wrap up
Overall I’m dead impressed with the Luba 2. It’s saved me hours and hours of time that I’d have spent mowing the grass, though I do still end up watching it go around the garden and admiring the the perfect lawn lines. Even our neighbours and landscapers have commented on how good a job it does.
There are definitely improvements that could be made to the app. Mammotion could learn a lot from Roborock when it comes to the app experience. The fact that many simple tasks, like nudging it if it’s off course or is stuck, have to be done with a Bluetooth connection even though the blades aren’t spinning. This makes zero sense to me.
The only thing that’s slightly turned my head was the recent announcement of the Roborock lawn mower – not due to any faults in the Luba, but more that Roborock just make great stuff.
That aside, the Luba 2 is a solid winner and a fantastic addition to any smart home. Even living with it for over 6 months it’s still immensely satisfying to always have perfectly cut lawns without any effort at all.