diff --git a/Makefile b/Makefile index a1c2e7e6..bb61eb92 100644 --- a/Makefile +++ b/Makefile @@ -177,6 +177,9 @@ GLUON_$(1)_MODEL_$(2)_ALIASES += $(3) endef +export SHA512SUM := $(GLUONDIR)/scripts/sha512sum.sh + + prereq: FORCE +$(NO_TRACE_MAKE) prereq @@ -209,7 +212,12 @@ gluon-tools: FORCE +$(GLUONMAKE_EARLY) package/lua/host/install package/usign/host/install -early_prepared_stamp := $(GLUON_BUILDDIR)/prepared + +early_prepared_stamp := $(GLUON_BUILDDIR)/prepared_$(shell \ + ( \ + $(SHA512SUM) $(GLUONDIR)/modules; \ + [ ! -r $(GLUON_SITEDIR)/modules ] || $(SHA512SUM) $(GLUON_SITEDIR)/modules \ + ) | $(SHA512SUM) ) prepare-early: FORCE for dir in build_dir dl staging_dir; do \ @@ -223,6 +231,7 @@ prepare-early: FORCE touch $(early_prepared_stamp) $(early_prepared_stamp): + rm -f $(GLUON_BUILDDIR)/prepared_* +$(GLUONMAKE_EARLY) prepare-early $(GLUON_OPKG_KEY): $(early_prepared_stamp) FORCE @@ -253,8 +262,9 @@ MODULE_PREFIX = gluon-$(GLUON_SITE_CODE)-$(PREPARED_RELEASE) include $(INCLUDE_DIR)/target.mk build-key: FORCE - ln -sf $(GLUON_OPKG_KEY) $(BUILD_KEY) - ln -sf $(GLUON_OPKG_KEY).pub $(BUILD_KEY).pub + rm -f $(BUILD_KEY) $(BUILD_KEY).pub + cp $(GLUON_OPKG_KEY) $(BUILD_KEY) + cp $(GLUON_OPKG_KEY).pub $(BUILD_KEY).pub config: FORCE +$(NO_TRACE_MAKE) scripts/config/conf OPENWRT_BUILD= QUIET=0 @@ -304,9 +314,6 @@ clean: FORCE rm -f $(gluon_prepared_stamp) -export SHA512SUM := $(GLUONDIR)/scripts/sha512sum.sh - - download: FORCE +$(SUBMAKE) tools/download +$(SUBMAKE) toolchain/download diff --git a/docs/index.rst b/docs/index.rst index 0e2bec80..54effbcf 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -150,6 +150,11 @@ ar71xx-generic - UniFi AP Pro - UniFi AP Outdoor +* Western Digital + + - My Net N600 + - My Net N750 + ar71xx-nand ^^^^^^^^^^^ diff --git a/docs/releases/v2015.2.rst b/docs/releases/v2015.2.rst index 8794fe01..687582a1 100644 --- a/docs/releases/v2015.2.rst +++ b/docs/releases/v2015.2.rst @@ -22,6 +22,15 @@ ar71xx-generic - TL-WR941ND v6 - TL-WR1043N/ND v3 +* Ubiquiti + + - airGateway + +* Western Digital + + - My Net N600 + - My Net N750 + x86-xen_domu ^^^^^^^^^^^^ @@ -35,13 +44,66 @@ x86-64 New features ~~~~~~~~~~~~ +Kernel module opkg repository +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +We've not been able to keep ABI compatiblity with the kernel of the official OpenWrt images. +Therefore, Gluon now generates a opkg repository with modules itself. + +The repository can be found at `output/modules/` by default, the image output directory has +been moved from `images/` to `output/images/`. See the updated :doc:`../user/getting_started` guide +for information on the handling of the signing keys for this repository. + +The `opkg_repo` site.conf option has been replaced to allow specifying this and other additional repositories. + +New status page +^^^^^^^^^^^^^^^ + +The new status page provides a visually pleasing experience, and displays all important information +on a node in a clear manner. It also contains a real-time signal strength graph for all neighbouring +nodes to aid with the alignment of antennas. + +802.11s mesh support +^^^^^^^^^^^^^^^^^^^^ + +Gluon now supports using 802.11s for its mesh links instead of IBSS (Adhoc). This will allow supporting +WLAN hardware which can't to AP and IBSS mode simultaneously in the future (like Ralink/Mediatek). + +Note that batman-adv is still used on top of 802.11s (and 802.11s forwarding is disabled), the mesh routing protocol +provided by 802.11s is not used. + +Multicast filter extension +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `gluon-ebtables-filter-multicast` package has been extended to filter out multicast +ICMP and ICMPv6 Echo Requests (ping) and Node Information Queries (RFC4620). This prevents +pings to multicast addresses like ff02::1 to cause traffic peaks +(as all nodes and clients would answer such a ping). + +French translation +^^^^^^^^^^^^^^^^^^ + +A French translation for the Config Mode/Expert Mode has been added. Bugfixes ~~~~~~~~ +* Update kernel code for the QCA953x + + Might improve stability of the TP-Link TL-WR841N/ND v9. +* Fix model detection on some Netgear WNDR3700v2 + + The broken devices will identify as "NETGEAR ". + This also breaks the autoupdater, making a manual upgrade necessary. +* Ensure that `odhcp6c` doesn't spawn multiple instances of ``dhcpv6.script`` +* Fix support for Buffalo WZR-600DHP + + A flashable factory image is generated now. The sysupgrade image is still shared + with the WZR-HP-AG300H. Site changes ~~~~~~~~~~~~ + * ``site.conf`` - New WLAN configuration @@ -167,6 +229,30 @@ Site changes Internals ~~~~~~~~~ +* OpenWrt has been updated to Chaos Calmer +* mac80211 has been backported from OpenWrt trunk r47249 (wireless-testing 2015-07-21) + + This allows us to support the TL-WR940N v3/TL-WR941ND v6, which uses a TP9343 (QCA956x) SoC. +* Several packages have been moved from the Gluon repo to the packages repo, removing references to Gluon: + + - gluon-cron -> micrond (the crontabs are now read from ``/usr/lib/micron.d`` instead of ``/lib/gluon/cron``) + - gluon-radvd -> uradvd + - gluon-simple-tc -> simple-tc (the config file has been renamed as well) +* Some of the Gluon-specific i18n support code in the build system has been removed, as LuCI now provides + similar facilities +* The C-based `luci-lib-jsonc` library is now used for JSON encoding/decoding instead of the pure Lua `luci-lib-json` Known Issues ~~~~~~~~~~~~ + +* Default TX power on many Ubiquiti devices is too high, correct offsets are unknown (`#94 `_) + + Reducing the TX power in the Expert Mode is recommended. +* batman-adv causes stability issues for both alfred and respondd/announced (`#177 `_) +* The MAC address of the WAN interface is modified even when Mesh-on-WAN is disabled (`#496 `_) + + This may lead to issues in environments where a fixed MAC address is expected (like VMware when promicious mode is disallowed). + +* Inconsistent respondd/announced API (`#522 `_) + + The current API is inconsistent and will be replaced in the next release. The old API will still be supported for a while. diff --git a/docs/user/site.rst b/docs/user/site.rst index a0629bc5..49cc303a 100644 --- a/docs/user/site.rst +++ b/docs/user/site.rst @@ -95,14 +95,16 @@ wifi24 : optional This will only affect new installations. Upgrades will not changed the disabled state. - ``ap`` requires a single parameter, a string, named ``ssid`` which sets the interface's ESSID. + ``ap`` requires a single parameter, a string, named ``ssid`` which sets the + interface's ESSID. ``mesh`` requires a single parameter, a string, named ``id`` which sets the mesh id. ``ibss`` requires two parametersr: ``ssid`` (a string) and ``bssid`` (a MAC). An optional parameter ``vlan`` (integer) is supported. - Both ``mesh`` and ``ibss`` accept an optional ``mcast_rate`` (kbit/s) parameter for setting the default multicast datarate. + Both ``mesh`` and ``ibss`` accept an optional ``mcast_rate`` (kbit/s) parameter for + setting the default multicast datarate. :: wifi24 = { @@ -156,10 +158,10 @@ fastd_mesh_vpn The `enabled` option can be set to true to enable the VPN by default. - If `configurable` is `false` or unset, the method list will be replaced on updates - with the list in the site configuration. Setting `configurable` to `true` will allow the user to - add the method ``null`` to the front of the method list or remove ``null`` from it, - and make this change survive updates. Settings configurable is necessary for the + If `configurable` is set to `false` or unset, the method list will be replaced on updates + with the list from the site configuration. Setting `configurable` to `true` will allow the user to + add the method ``null`` to the beginning of the method list or remove ``null`` from it, + and make this change survive updates. Setting `configurable` is necessary for the package `gluon-luci-mesh-vpn-fastd`, which adds a UI for this configuration. In any case, the ``null`` method should always be the first method in the list @@ -169,19 +171,41 @@ fastd_mesh_vpn fastd_mesh_vpn = { methods = {'salsa2012+umac'}, - -- enabled = true, - -- configurable = true, + -- enabled = true, + -- configurable = true, mtu = 1280, groups = { backbone = { - limit = 1, + -- Limit number of connected peers from this group + limit = 2, peers = { peer1 = { key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', - remotes = {'ipv4 "vpn1.entenhausen.freifunk.net" port 10000'}, + -- Having multiple domains prevents SPOF in freifunk.net + remotes = { + 'ipv4 "vpn1.entenhausen.freifunk.net" port 10000', + 'ipv4 "vpn1.entenhausener-freifunk.de" port 10000', + }, }, - } - } + peer2 = { + key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', + -- You can also omit the ipv4 to allow both connection via ipv4 and ipv6 + remotes = {'"vpn2.entenhausen.freifunk.net" port 10000'}, + }, + }, + -- Optional: nested peer groups + -- groups = { + -- lowend_backbone = { + -- limit = 1, + -- peers = ... + -- }, + -- }, + }, + -- Optional: additional peer groups, possibly with other limits + -- peertopeer = { + -- limit = 10, + -- peers = { ... }, + -- }, }, bandwidth_limit = { @@ -207,14 +231,15 @@ autoupdater : package :: autoupdater = { - branch = 'experimental', + branch = 'stable', branches = { stable = { name = 'stable', mirrors = { 'http://[fdca:ffee:babe:1::fec1]/firmware/stable/sysupgrade/', - 'http://[fdca:ffee:babe:1::fec2]/firmware/stable/sysupgrade/', + 'http://autoupdate.entenhausen.freifunk.net/firmware/stable/sysupgrade/', }, + -- Number of good signatures required good_signatures = 2, pubkeys = { 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', -- someguy @@ -225,9 +250,9 @@ autoupdater : package } roles : optional - Optional role definitions. With this nodes will announce their role inside the mesh. - In the backend this adds the facility to distinguish between normal, backbone and - service nodes or even gateways (if they advertise the role, also). It is up to + Optional role definitions. Nodes will announce their role inside the mesh. + This will allow in the backend to distinguish between normal, backbone and + service nodes or even gateways (if they advertise that role). It is up to the community which roles to define. See the section below as an example. ``default`` takes the default role which is set initially. This value should be part of ``list``. If you want node owners to change the role via config mode add @@ -279,7 +304,7 @@ The ``site.mk`` is a Makefile which should define constants involved in the build process of Gluon. GLUON_SITE_PACKAGES - Defines a list of packages which should installed in addition + Defines a list of packages which should be installed additionally to the ``gluon-core`` package. GLUON_RELEASE @@ -290,7 +315,7 @@ GLUON_PRIORITY for more information). GLUON_LANGS - List of languages (as two-letter-codes) to include for the web interface. Should always contain + List of languages (as two-letter-codes) to be included in the web interface. Should always contain ``en``. .. _site-config-mode-texts: @@ -362,6 +387,7 @@ site-repos in the wild This is a non-exhaustive list of site-repos from various communities: +* `site-ffa `_ (Altdorf, Landshut & Umgebung) * `site-ffbs `_ (Braunschweig) * `site-ffhb `_ (Bremen) * `site-ffda `_ (Darmstadt) diff --git a/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua b/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua index d3ddcd72..788ff430 100644 --- a/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua +++ b/package/gluon-luci-private-wifi/files/usr/lib/lua/luci/model/cbi/admin/privatewifi.lua @@ -11,7 +11,7 @@ f.template = "admin/expertmode" s = f:section(SimpleSection, nil, translate( 'Your node can additionally extend your private network by bridging the WAN interface ' - .. 'with a seperate WLAN. This feature is completely independent of the mesh functionality. ' + .. 'with a separate WLAN. This feature is completely independent of the mesh functionality. ' .. 'Please note that the private WLAN and meshing on the WAN interface should not be enabled ' .. 'at the same time.' )) diff --git a/package/gluon-luci-private-wifi/i18n/fr.po b/package/gluon-luci-private-wifi/i18n/fr.po index 091aa87d..c95ecd0a 100644 --- a/package/gluon-luci-private-wifi/i18n/fr.po +++ b/package/gluon-luci-private-wifi/i18n/fr.po @@ -1,12 +1,12 @@ msgid "" msgstr "" -"Content-Type: text/plain; charset=UTF-8\n" "Project-Id-Version: PACKAGE VERSION\n" "PO-Revision-Date: 2015-08-19 23:30+0100\n" "Last-Translator:Tobias Bernot \n" "Language-Team: French\n" "Language: fr\n" "MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" @@ -25,6 +25,7 @@ msgid "" "the mesh functionality. Please note that the private WLAN and meshing on the " "WAN interface should not be enabled at the same time." msgstr "" -"Votre nœud peut étendre votre réseau privé en interfaçant le WAN avec un WLAN séparé. " -"Cette fonction est complètement indépendante de les fonctions de MESH. " -"Il ne faut pas activer la fonction de MESH et de WLAN privé en même temps." +"Votre nœud peut étendre votre réseau privé en interfaçant le WAN avec un " +"WLAN séparé. Cette fonction est complètement indépendante de les fonctions " +"de MESH. Il ne faut pas activer la fonction de MESH et de WLAN privé en même " +"temps." diff --git a/package/gluon-mesh-vpn-fastd/files/lib/gluon/announce/nodeinfo.d/software/fastd b/package/gluon-mesh-vpn-fastd/files/lib/gluon/announce/nodeinfo.d/software/fastd index 7b1ff4bc..2c412eb8 100644 --- a/package/gluon-mesh-vpn-fastd/files/lib/gluon/announce/nodeinfo.d/software/fastd +++ b/package/gluon-mesh-vpn-fastd/files/lib/gluon/announce/nodeinfo.d/software/fastd @@ -1,5 +1,5 @@ local ret = { - enabled = uci:get('fastd', 'mesh_vpn', 'enabled') ~= 0, + enabled = uci:get('fastd', 'mesh_vpn') and (uci:get('fastd', 'mesh_vpn', 'enabled') == nil or uci:get_bool('fastd', 'mesh_vpn', 'enabled')), version = util.readline(io.popen('exec fastd -v')):match('^[^%s]+%s+(.+)'), } return ret diff --git a/package/gluon-status-page/src/js/lib/gui/statistics.js b/package/gluon-status-page/src/js/lib/gui/statistics.js index 33a845d8..49778dac 100644 --- a/package/gluon-status-page/src/js/lib/gui/statistics.js +++ b/package/gluon-status-page/src/js/lib/gui/statistics.js @@ -252,8 +252,8 @@ define(["lib/helper"], function (Helper) { table = document.createElement("table") - mkTrafficRow(table, children, "Gesendet", stream, ".traffic.rx") - mkTrafficRow(table, children, "Empfangen", stream, ".traffic.tx") + mkTrafficRow(table, children, "Gesendet", stream, ".traffic.tx") + mkTrafficRow(table, children, "Empfangen", stream, ".traffic.rx") mkTrafficRow(table, children, "Weitergeleitet", stream, ".traffic.forward") el.appendChild(table) diff --git a/patches/openwrt/0042-acx-mac80211-mark-as-BROKEN-to-avoid-compile-failure-on-mipsel-targets.patch b/patches/openwrt/0042-acx-mac80211-mark-as-BROKEN-to-avoid-compile-failure-on-mipsel-targets.patch new file mode 100644 index 00000000..93353f10 --- /dev/null +++ b/patches/openwrt/0042-acx-mac80211-mark-as-BROKEN-to-avoid-compile-failure-on-mipsel-targets.patch @@ -0,0 +1,17 @@ +From: Matthias Schiffer +Date: Sat, 28 Nov 2015 22:40:40 +0100 +Subject: acx-mac80211: mark as BROKEN to avoid compile failure on mipsel targets + +diff --git a/package/kernel/acx-mac80211/Makefile b/package/kernel/acx-mac80211/Makefile +index 1820e7a..fb17a46 100644 +--- a/package/kernel/acx-mac80211/Makefile ++++ b/package/kernel/acx-mac80211/Makefile +@@ -30,7 +30,7 @@ include $(INCLUDE_DIR)/package.mk + define KernelPackage/acx-mac80211 + SUBMENU:=Wireless Drivers + TITLE:=ACX1xx mac80211 driver +- DEPENDS:=@(PCI_SUPPORT||TARGET_ar7) @!TARGET_cobalt @mipsel +kmod-mac80211 ++ DEPENDS:=@(PCI_SUPPORT||TARGET_ar7) @!TARGET_cobalt @mipsel +kmod-mac80211 @BROKEN + FILES:=$(PKG_BUILD_DIR)/acx-mac80211.ko + AUTOLOAD:=$(call AutoLoad,50,mac80211 acx-mac80211) + MAINTAINER:=Florian Fainelli diff --git a/patches/openwrt/0043-OpenSSL-Added-source-old-to-PKG_SOURCE_URL.patch b/patches/openwrt/0043-OpenSSL-Added-source-old-to-PKG_SOURCE_URL.patch new file mode 100644 index 00000000..8c5e166f --- /dev/null +++ b/patches/openwrt/0043-OpenSSL-Added-source-old-to-PKG_SOURCE_URL.patch @@ -0,0 +1,24 @@ +From: Ranlvor +Date: Sun, 6 Dec 2015 16:12:55 +0100 +Subject: OpenSSL: Added source/old to PKG_SOURCE_URL + +OpenSSL moves old versions of the library from http://www.openssl.org/source/ +to http://www.openssl.org/source/old/1.0.2/ breaking the old links. That +behavior breaks the OpenWRT-build every time OpenSSL releases a new version. + +This patch adds http://www.openssl.org/source/old/1.0.2/ to the PKG_SOURCE_URL +of OpenSSL to avoid breaking the build whenever OpenSSL releases a new +version. + +diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile +index 7f0da8b..039e1ab 100644 +--- a/package/libs/openssl/Makefile ++++ b/package/libs/openssl/Makefile +@@ -16,6 +16,7 @@ PKG_BUILD_PARALLEL:=1 + + PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz + PKG_SOURCE_URL:=http://www.openssl.org/source/ \ ++ http://www.openssl.org/source/old/1.0.2/ \ + ftp://ftp.funet.fi/pub/crypt/mirrors/ftp.openssl.org/source \ + ftp://ftp.sunet.se/pub/security/tools/net/openssl/source/ + PKG_MD5SUM:=38dd619b2e77cbac69b99f52a053d25a diff --git a/patches/openwrt/0044-Revert-bzip2-extend-fix-the-Host-Install-rule-to-install-libbz2.so-files.patch b/patches/openwrt/0044-Revert-bzip2-extend-fix-the-Host-Install-rule-to-install-libbz2.so-files.patch new file mode 100644 index 00000000..53e88b42 --- /dev/null +++ b/patches/openwrt/0044-Revert-bzip2-extend-fix-the-Host-Install-rule-to-install-libbz2.so-files.patch @@ -0,0 +1,23 @@ +From: Matthias Schiffer +Date: Tue, 8 Dec 2015 19:51:05 +0100 +Subject: Revert "bzip2: extend/fix the Host/Install rule to install libbz2.so files" + +This reverts commit f5ebfb02fc5f539e89393b8186f7ecd768402f12. + +diff --git a/package/utils/bzip2/Makefile b/package/utils/bzip2/Makefile +index ba47cfb..e1c7b97 100644 +--- a/package/utils/bzip2/Makefile ++++ b/package/utils/bzip2/Makefile +@@ -97,10 +97,9 @@ HOST_CONFIGURE_ARGS+= \ + --prefix=$(STAGING_DIR_HOST) + + define Host/Install +- $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/ $(STAGING_DIR_HOST)/usr/lib ++ $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/ + $(MAKE) -C $(HOST_BUILD_DIR) PREFIX=$(STAGING_DIR_HOST)/usr/ install +- $(CP) $(HOST_BUILD_DIR)/libbz2.so* $(STAGING_DIR_HOST)/usr/lib/ +- $(CP) $(HOST_BUILD_DIR)/libbz2.so.1.0 $(STAGING_DIR_HOST)/usr/lib/libbz2.so ++# $(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(STAGING_DIR_HOST)/bin/pgen2 + endef + + $(eval $(call HostBuild)) diff --git a/targets/ar71xx-generic/profiles.mk b/targets/ar71xx-generic/profiles.mk index a64ebdd4..c32d1f0a 100644 --- a/targets/ar71xx-generic/profiles.mk +++ b/targets/ar71xx-generic/profiles.mk @@ -232,3 +232,13 @@ $(eval $(call GluonModel,ALL0315N,all0315n,allnet-all0315n)) $(eval $(call GluonProfile,GLINET)) $(eval $(call GluonModel,GLINET,gl-inet-6408A-v1,gl-inet-6408a-v1)) $(eval $(call GluonModel,GLINET,gl-inet-6416A-v1,gl-inet-6416a-v1)) + +## Western Digital + +# WD MyNet N600 +$(eval $(call GluonProfile,MYNETN600)) +$(eval $(call GluonModel,MYNETN600,mynet-n600,wd-my-net-n600)) + +# WD MyNet N750 +$(eval $(call GluonProfile,MYNETN750)) +$(eval $(call GluonModel,MYNETN750,mynet-n750,wd-my-net-n750))