OpenWrt on UniFi AC Mesh AP (ubnt)

The Unifi AC Mesh AP with it 1Gbs Nic card and a Throughput Speeds until 866.7 Mbps in 5Ghz and 300 Mbps in 2.4Ghz is an excellent product, combined with OpenWrt you can do what you want with. Below we will try to give you a little how-to to process the modification of the firmware.

 

 

 

 

The Ubiquiti UniFi AC Mesh AP (UAP-AC-Mesh) is essentially the same platform as UniFi AP AC LITE.

 

 

You can retrieve the detail on the OpenWrt wiki here. The Ubiquiti UniFi AC Mesh AP (UAP-AC-Mesh) is compatible with OpenWrt but before you need to downgrade to the 3.7.40 version of the firmware.

 

 

To use OpenWrt you need to follow these steps:

 

 

Transfer in ftp or directly in ssh connection to the UniFi AC Mesh AP the firmware 3.7.40

 

If it’s a new antenna then it’s ip is 192.168.1.20 and login/password are the default (ubnt/ubnt) else it’s same that what you put in the controller.

 

After connected in ssh you can use curl (or on old version wget) to download the firmware 3.7.40 and downgrade the system using the command fwupdate.real

 

BZ.v3.7.58# cd /tmp

BZ.v3.7.58# curl https://dl.ubnt.com/unifi/firmware/U7PG2/3.7.40.6115/BZ.qca956x.v3.7.40.6115.170208.1059.bin > firmware.bin

BZ.v3.7.58# fwupdate.real -m firmware.bin

 

Upgrade with the OpenWrt firmware

 

After the antenna restart log again in ssh to check the downgrade worked well (looking the version show on the prompt), download the OpenWrt basic firmware or the one you built  and upgrade the Ubiquiti UniFi AC Mesh AP (UAP-AC-Mesh).

 

BZ.v3.7.40# cd /tmp

BZ.v3.7.40# wget https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin

BZ.v3.7.40# mtd write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel0
Unlocking kernel0 ...
Erasing kernel0 ...
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel0 ... [e/w]

BZ.v3.7.40# mtd -r write /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin kernel1
Unlocking kernel1 ...
Erasing kernel1 ...
Writing from /tmp/openwrt-ar71xx-generic-ubnt-unifiac-lite-squashfs-sysupgrade.bin to kernel1 ... [e/w]

 

All information about the basic firmware can be found on the OpenWrt wiki here or if you prefer working with your own build you can to (take a look at our post about the OpenWrt build system here).

 

Important! for the 5Ghz wifi hardware it is detected as QCA988X/hw2.0 and supported by the ath10k driver. to make it working you need to install kmod-ath10k and ath10k-firmware-qca988x (or include it in your build).

 

Tips: other way to put the OpenWrt on the Ubiquiti UniFi AC Mesh AP (UAP-AC-Mesh) can be found on the OpenWrt wiki here. In the same way you can follow the same process for the  the Ubiquiti UniFi AC Mesh PRO AP (UAP-AC-Mesh-Pro) who is similar of the UniFi AP AC PRO.

 

To setup the wifi you can do

 

root@UAP-AC-Mesh# rm /etc/config/wireless
root@UAP-AC-Mesh# wifi detect > /etc/config/wireless
root@UAP-AC-Mesh# reboot

 

Or use the link to the OpenWrt wiki here

การติดตั้งและใช้งาน Socket.IO

Socket.IO คือ การติดต่อสื่อสารกันระหว่าง client และ server ผ่านทาง websocket ในรูปแบบการเฝ้าระวังเหตุการณ์ที่จะเกิดขึ้น (event-based) แบบ  real-time ซึ่งสามารถทำงานได้รวดเร็ว จึงทำให้เป็นที่นิยมใช้กันอย่างแพร่หลาย และในบทความนี้เราจะมาเรียนรู้วิธีการการติดตั้งและใช้งาน Socket.IO ร่วมกับ ExpressJs และ AngularJS

 

ก่อนที่เราจะเริ่มต้นใช้งาน Socket.IO นั้นสิ่งที่จะต้องติดตั้งก่อนนั่นก็คือ NodeJs และ NPM (ซึ่งปกติจะติดตั้งมาพร้อมกับ NodeJs อยู่แล้ว) หลังจากติดตั้งเสร็จเรียบร้อยแล้ว

แนะนำให้ติดตั้ง express-generator ซึ่งเป็นเครื่องมือในการช่วยสร้างเว็บแอพพลิเคชั่น (เหมาะสำหรับมือใหม่)

 

การติดตั้ง express-generator ด้วย NPM

$ npm install express-generator -g

 

หลังจากติดตั้ง express-generator เรียบร้อยแล้ว เราก็จะมาทำการสร้างเว็บเซิร์ฟเวอร์ด้วยคำสั่งต่อไปนี้

$ express --view=ejs socketio-express-angularjs 
$ cd socketio-express-angularjs 
$ npm install

 

ตอนนี้เรามีเซิร์ฟเวอร์ที่พร้อมใช้งานบน NodeJs เรียบร้อยแล้วต่อไปก็คือการติดตั้ง Socket.IO ลงไปบนเซิร์ฟเวอร์ วิธีติดตั้งก็ง่ายๆ เพียงรันคำสั่งด้านล่างนี้

$ npm install socket.io --save

 

หลังจากติดตั้ง Socket.IO เรียบร้อยแล้วต่อไปก็เป็นการตั้งค่าเพื่อเรียกใช้งานบนเซิร์ฟเวอร์

ให้เปิดไฟล์ www ที่อยู่ในโฟลเดอร์ bin ด้วยโปรแกรม editor และทำการเพิ่มโค้ดด้านล่างนี้

var server = http.createServer(app);

var io = require('socket.io')(server);

io.on('connection', function (socket) {
    socket.emit('newConnection', { message: 'hi, you are connected to the socket.io' });
    
    socket.on('someInformation', function(data) {
        console.log(data);
    });
});

 

หลังจากเพิ่มโค้ดในส่วนของ Socket.IO แล้วให้ลองทำการทดสอบรันเซิร์ฟเวอร์ เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ทำงานได้ปกติไม่มีเออเร่อใดๆ คำสั่งที่ใช้สำหรับรันเซิร์ฟเวอร์คือ

$ DEBUG=socket.io* npm start

 

หรือจะเพิ่มคำสั่งข้างบนเข้าไปในไฟล์ package.json ในส่วนของ scripts จะได้หน้าตาดังนี้ ซึ่งจะทำให้เราสามารถรันเซิร์ฟเวอร์ด้วยคำสั่ง `npm run dev` และก็เป็นอันเสร็จสิ้นการติดตั้ง Socket.IO ฝั่งเซิร์ฟเวอร์

"scripts": {
    "start": "node ./bin/www",
    "dev": "DEBUG=socket.io* npm start"
}

 

 

 

 

source code: https://github.com/CKitisak/socketio-express-angularjs