summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--_posts/2025-07-23-set-up-mock-server.markdown59
-rw-r--r--_posts/2025-07-23-welcome-to-jekyll.markdown29
-rw-r--r--about.markdown43
3 files changed, 94 insertions, 37 deletions
diff --git a/_posts/2025-07-23-set-up-mock-server.markdown b/_posts/2025-07-23-set-up-mock-server.markdown
new file mode 100644
index 0000000..8d2855c
--- /dev/null
+++ b/_posts/2025-07-23-set-up-mock-server.markdown
@@ -0,0 +1,59 @@
+---
+layout: post
+title: "Set up a mock server"
+date: 2025-07-23 09:06:41 +0800
+---
+
+When setting up or pairing your AIRMX Pro with our [setup page][setup-page],
+it's important to first configure [the mock API server][server]. This is
+necessary because when your device receives the Wi-Fi credentials during
+the process, it attempts to connect to the internet and sends a device
+registration request to _i.airmx.cn_ for identification.
+
+Unfortunately, the endpoint is hardcoded in the firmware, and we cannot modify
+it during the setup process. Therefore, we need to remap this domain name in
+the upstream device—the router.
+
+Since every router has a different configuration, you can consult your
+router's manual or use an open-source DNS tool, or configure a DNAT rule
+with IPTables. For instance, if you are using a router running on EdgeOS and
+you have set up the mock server on your Raspberry Pi, which is accessible at
+_192.168.10.10_, you can use the following commands:
+
+{% highlight bash %}
+set system static-host-mapping host-name i.airmx.cn inet 192.168.10.10
+set system static-host-mapping host-name mqtt.airmx.cn inet 192.168.10.10
+{% endhighlight %}
+
+It's essential to also configure _mqtt.airmx.cn_, as this is the domain name
+for the MQTT broker that the device connects to after completing the
+registration request. All device status updates and remote controls are
+handled through this broker. Meanwhile, _i.airmx.cn_ is responsible for
+processing device registration requests, and the device will periodically sync
+the time with this endpoint.
+
+I am using [Eclipse Mosquitto][mosquitto] as the MQTT broker and configuring
+it for **anonymous** access since I only run it on my home network. Here’s the
+configuration file `mosquitto.conf` that I use to start the service:
+
+{% highlight conf %}
+listener 1883
+allow_anonymous true
+{% endhighlight %}
+
+Ensure that the network traffic from your AIRMX Pro and your computer is
+routed through the configured router. You can test the DNS resolution using
+the `ping` command:
+
+{% highlight bash %}
+ping i.airmx.cn
+{% endhighlight %}
+
+If the configuration is correct, you should see that the resolved IP address
+is _192.168.10.10_ (replace with your local server's IP). Once confirmed, you
+can return to [the setup page][setup-page] and continue pairing your device.
+
+
+[setup-page]: https://github.com/openairmx/setup
+[server]: https://github.com/openairmx/server
+[mosquitto]: https://mosquitto.org
diff --git a/_posts/2025-07-23-welcome-to-jekyll.markdown b/_posts/2025-07-23-welcome-to-jekyll.markdown
deleted file mode 100644
index 2f99048..0000000
--- a/_posts/2025-07-23-welcome-to-jekyll.markdown
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: post
-title: "Welcome to Jekyll!"
-date: 2025-07-23 09:06:41 +0800
-categories: jekyll update
----
-You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
-
-Jekyll requires blog post files to be named according to the following format:
-
-`YEAR-MONTH-DAY-title.MARKUP`
-
-Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
-
-Jekyll also offers powerful support for code snippets:
-
-{% highlight ruby %}
-def print_hi(name)
- puts "Hi, #{name}"
-end
-print_hi('Tom')
-#=> prints 'Hi, Tom' to STDOUT.
-{% endhighlight %}
-
-Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
-
-[jekyll-docs]: https://jekyllrb.com/docs/home
-[jekyll-gh]: https://github.com/jekyll/jekyll
-[jekyll-talk]: https://talk.jekyllrb.com/
diff --git a/about.markdown b/about.markdown
index 8b4e0b2..aa61b09 100644
--- a/about.markdown
+++ b/about.markdown
@@ -4,15 +4,42 @@ title: About
permalink: /about/
---
-This is the base Jekyll theme. You can find out more info about customizing your Jekyll theme, as well as basic Jekyll usage documentation at [jekyllrb.com](https://jekyllrb.com/)
+Hello! Welcome to Open AIRMX, a site dedicated to everything related to
+AIRMX Pro.
-You can find the source code for Minima at GitHub:
-[jekyll][jekyll-organization] /
-[minima](https://github.com/jekyll/minima)
+This project originated from my desire to integrate the device with
+Apple Home, enabling remote control. However, around mid-2024, an unexpected
+issue arose when someone reported in the repository that the AIRMX company
+had gone out of business. This created a challenge for users who needed to
+retrieve the device’s key, as there was no way to access it with the official
+servers down.
-You can find the source code for Jekyll at GitHub:
-[jekyll][jekyll-organization] /
-[jekyll](https://github.com/jekyll/jekyll)
+After an extensive investigation and reverse engineering of the AIRMX mobile
+application, we were able to find a solution. We are excited to offer you the
+ability to fully localize your device on your home network. Currently, we
+provide dedicated repositories for:
+- [A mock API server][mock-server] that handles device registration and
+ time synchronization.
+- [A setup page][setup-page] to assist you in pairing or reconnecting your
+ device to the internet.
+- [A JavaScript project][airmx] called [airmx][airmx] that allows you to
+ control the device. This is a low-level package for composing and validating
+ MQTT messages, making it ready for integration with various platforms.
+- [A Homebridge plugin][homebridge-airmx] for AIRMX Pro, which enables you to
+ control your device across your Apple devices, including via Siri.
-[jekyll-organization]: https://github.com/jekyll
+The project scope has expanded significantly beyond our initial expectations.
+We are open-source enthusiasts and do not have any affiliation with
+AIRMX—The company. The project is managed by a software engineer and a
+UI designer. If you appreciate our work, we would be grateful for your support
+through GitHub Sponsors or PayPal. Your generosity means a lot to us.
+
+If you have any questions or just want to say hello, please feel free to
+send us a message at [[email protected]][contact-email].
+
+[mock-server]: https://github.com/openairmx/server
+[setup-page]: https://github.com/openairmx/setup
+[airmx]: https://github.com/openairmx/airmx
+[homebridge-airmx]: https://github.com/openairmx/homebridge-airmx
+[contact-email]: mailto:[email protected]