Retrieve addresses from stock firmware
- How Do I Setup Mac Address For Roomba Battery
- How Do I Setup Mac Address For Roomba Won
- How Do I Setup Mac Address For Roomba Vacuum
- How Do I Setup Mac Address For Roomba 2
The first step is to find out which addresses are present in stock configuration.The procedure depends on your level of access to the device's firmware.
The result would be a list like the following:
Set up MAC address filtering on your router. This is a bit tech-intensive, but it boils down to this: every device you connect to the net has a unique Media Access Control (MAC) address. You can give your router a list of MAC addresses, and tell it not to let anyone in unless they’re on the list.
Find out about flash locations
If you already have OpenWrt running on the device, you can try to find out about MAC locations on flash (note that not all devices store addresses there).
- Adding a Wi-Fi connected Roomba to the MAC address filtering list. Select Advanced Options during the Wi-Fi set-up procedure. Select On if you have MAC address filtering enabled on your router. Continue the setup flow until you're presented with the MAC address.
- One, you need to change your MAC address so you network will recognize your device and allow it to connect. Two, for malicious purposes you may need to spoof you MAC address so you could gain access to networks or to hide who you really are. Spoofing your MAC address is legal and can be done safely within Windows without any external software.
List partitions:
You would normally expect WiFi MAC addresses in the art partition. To check for that, use hexdump on the corresponding mtd4:
This will dump the whole partition to your console. Now you can look for addresses there: Take one byte of the vendor part of the address (first three bytes) and do text search …
The same should be done for other partitions. Usual suspects are:
- mac
- art
If you are successful, you will have a list of addresses and locations, e.g.
You can check your data by using OpenWrt's get_mac_binary command (based on mtdX):
or by using mtd_get_mac_binary (based on partition label):
Merge your data
Now, combine data from stock firmware and your research to have a complete list:
You could also include this list in your commit message to preserve the information.
As in the example, it is possible that the same address is present in different locations. In this case, use the location that “belongs” to the interface, i.e. art for WiFi, others for ethernet.
Set MAC addresses
MAC address pulled by driver
In several cases, the MAC address is already provided at the correct location for the driver to use it automatically.
(This list is incomplete. Please extend it.)
Known cases:
- ath79: mtd-cal-data: The MAC address will be read from start +2
- ramips: mediatek,mtd-eeprom/ralink,mtd-eeprom: The MAC address will be read from start +4
- ath10k: offset + 6
So, if you have MAC location matching those, you do not have to specify the MAC address in DTS or base-files for the particular interface.
Correct:
Suboptimal (not precisely wrong):
This can also be exploited for setting the label MAC address (see below) via 02_network.
Label MAC address
refs:https://github.com/openwrt/openwrt/pull/2159https://github.com/openwrt/openwrt/pull/2253
Many devices bear a label with one or several MAC addresses on it. Those may be used to identify the device in the network and thus represent a valuable additional information about the device.
When adding device support, you should also check which of the interface addresses corresponds to address on the label. If we assume the label MAC address ends with 0a
, we could assign either LAN or 5 GHz to it. The choice for an ambiguous address is arbitrary, so let's choose 5 GHz.
How Do I Setup Mac Address For Roomba Battery
There are two options to specify the label MAC address in OpenWrt:
label-mac-device DTS file
We can refer to the device bearing the label MAC address in DTS. For that purpose, one needs to reference the node with an alias, e.g.
Obviously, this is only valid if the 5 GHz Wifi device tree node actually has been named wifi0.
Attention: Not all interface can be referenced this way. To check whether there actually is a usable MAC address, check the device tree on your router:
Run
on your device.
Attention: This will only work if you have already set up MAC addresses correctly based on the information retrieved above.
It will give you a list like the following:
For each of the returned paths (if there are any), retrieve the mac-address, e.g.
Valid choices are only mac-address
or local-mac-address
. There may be one, two or no paths giving the correct address.
If you find the label MAC address here, check your DTS for the corresponding parent node. The correct node for /proc/device-tree/ahb/apb/wmac@18100000/mac-address
would be /ahb/apb/wmac@18100000
. Use this node's alias or add a reasonable one yourself if missing.
Attention: Note that label MAC addresses are assigned relatively randomly by vendors, so label-mac-device should be regularly put into DTS files or DTSIs with few users, so it is not inherited by accident.
Set label MAC address via 02_network
If device tree does not lead to the relevant MAC address, we can still set it in 02_network. In this case, you need to set label_mac in a similar way as it is already used for lan_mac and wan_mac, e.g.
This is evaluated below by the line
If possible, setting the address with the DTS approach is preferred.
How Do I Setup Mac Address For Roomba Won
Using the label MAC address
When everything is set up correctly, the label MAC address can be accessed with:
Common MAC address locations
If there is an ART partition, WiFi MAC addresses are frequently/typically stored there.
ath79:
- All TP-LINK routers using old tp-link header (those using Device/tplink-Xm or Device/tplink-Xmlzma templates defined in target/linux/ath79/image/common-tplink.mk), store only one mac address in <&uboot 0x1fc00>, which is the label mac address.
ramips:For ramips, typical locations for ethernet addresses are as follows:
How Do I Setup Mac Address For Roomba Vacuum
- mt7621: lan mac is at factory 0xe000 and wan mac at factory 0xe006. This is the default location for mt7621 boards in MTK's SDK.
- For mt7620/mt76x8 boards if there's a lan mac at 0x28 there may be a wan mac at 0x2e. (There's only one GMAC for these two chips so GMAC2_OFFSET defined above isn't used.)
How Do I Setup Mac Address For Roomba 2
Attention: Those are typical addresses. Some vendors mix them, invert them, or even use completely different locations!