Comments 75
AirPort Extreme разработан на основе предварительных технических требований к стандарту IEEE 802.11ac
Сейчас в постановлениях ГРЧЦ по частотному диапазону 5 Ггц указано, что ширина 80 и 160 Мгц доступна в России.
На момент выхода первого роутера Apple с IEEE 802.11ac в 2013 году не был полностью описан стандарт в нашем законодательстве. И как следствие, не могли использовать технологию beamforming, т.к. это описано как «дополнительные технологии».
ещё бы на эти железки openwrt какой-нибудь нарезать, а то мощность большая, но использовать например для роутинга/опенвпн не представляется возможным
сделайте
sudo su
и устанавливайте из под rootcd ~
git clone https://github.com/x56/airpyrt-tools
mkvirtualenv -p python2.7 -a `pwd`/airpyrt-tools airpyrt-tools
cd ~/airpyrt-tools
python setup.py install
python -m acp -t {ipv4-address} -p {password} --setprop dbug 0x3000
etc...
Как поставить mkvirtualenv — кажется описано тут, но это неточно
Потом не забудьте
rm -r ~/.virtualenvs/airpyrt-tools ~/airpyrt-tools
running install
running bdist_egg
running egg_info
writing requirements to acp.egg-info/requires.txt
writing acp.egg-info/PKG-INFO
writing top-level names to acp.egg-info/top_level.txt
writing dependency_links to acp.egg-info/dependency_links.txt
writing entry points to acp.egg-info/entry_points.txt
reading manifest file 'acp.egg-info/SOURCES.txt'
writing manifest file 'acp.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.15-x86_64/egg
running install_lib
running build_py
creating build/bdist.macosx-10.15-x86_64/egg
creating build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/misc.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/exception.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/encryption.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/property.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/client.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/cflbinary.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/session.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/__init__.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/message.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/basebinary.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/cli.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/__main__.py -> build/bdist.macosx-10.15-x86_64/egg/acp
copying build/lib/acp/keystream.py -> build/bdist.macosx-10.15-x86_64/egg/acp
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/misc.py to misc.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/exception.py to exception.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/encryption.py to encryption.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/property.py to property.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/client.py to client.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/cflbinary.py to cflbinary.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/session.py to session.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/__init__.py to __init__.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/message.py to message.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/basebinary.py to basebinary.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/cli.py to cli.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/__main__.py to __main__.pyc
byte-compiling build/bdist.macosx-10.15-x86_64/egg/acp/keystream.py to keystream.pyc
creating build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/PKG-INFO -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/SOURCES.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/dependency_links.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/entry_points.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/requires.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
copying acp.egg-info/top_level.txt -> build/bdist.macosx-10.15-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents…
creating 'dist/acp-1.0-py2.7.egg' and adding 'build/bdist.macosx-10.15-x86_64/egg' to it
removing 'build/bdist.macosx-10.15-x86_64/egg' (and everything under it)
Processing acp-1.0-py2.7.egg
Removing /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
Copying acp-1.0-py2.7.egg to /Library/Python/2.7/site-packages
acp 1.0 is already the active version in easy-install.pth
Installing acp script to /usr/local/bin
Installed /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
Processing dependencies for acp==1.0
Searching for pycrypto
Reading pypi.org/simple/pycrypto
Downloading files.pythonhosted.org/packages/60/db/645aa9af249f059cc3a368b118de33889219e0362141e75d4eaf6f80f163/pycrypto-2.6.1.tar.gz#sha256=f2ce1e989b272cfcb677616763e0a2e7ec659effa67a88aa92b3a65528f60a3c
Best match: pycrypto 2.6.1
Processing pycrypto-2.6.1.tar.gz
Writing /tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.cfg
Running pycrypto-2.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vwNGHR/pycrypto-2.6.1/egg-dist-tmp-wFjFUV
configure: error: in `/private/tmp/easy_install-vwNGHR/pycrypto-2.6.1':
configure: error: C compiler cannot create executables
See `config.log' for more details
Traceback (most recent call last):
File «setup.py», line 14, in «pycrypto»,
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/__init__.py", line 145, in setup
return distutils.core.setup(**attrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install.py", line 67, in run
self.do_egg_install()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install.py", line 117, in do_egg_install
cmd.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 418, in run
self.easy_install(spec, not self.no_deps)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 660, in easy_install
return self.install_item(None, spec, tmpdir, deps, True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 707, in install_item
self.process_distribution(spec, dist, deps)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 752, in process_distribution
[requirement], self.local_index, self.easy_install
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 782, in resolve
replace_conflicting=replace_conflicting
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1065, in best_match
return self.obtain(req, installer)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 1077, in obtain
return installer(requirement)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 679, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 705, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 890, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1158, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/easy_install.py", line 1144, in run_setup
run_setup(setup_script, args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 253, in run_setup
raise
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 195, in setup_context
yield
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 166, in save_modules
saved_exc.resume()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 141, in resume
six.reraise(type, exc, self._tb)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 154, in save_modules
yield saved
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 195, in setup_context
yield
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 250, in run_setup
_execfile(setup_script, ns)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/sandbox.py", line 45, in _execfile
exec(code, globals, locals)
File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 456, in
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 172, in run
cmd = self.call_command('install_lib', warn_dir=0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/bdist_egg.py", line 158, in call_command
self.run_command(cmdname)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/setuptools/command/install_lib.py", line 11, in run
self.build()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/install_lib.py", line 111, in build
self.run_command('build_ext')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 251, in run
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/tmp/easy_install-vwNGHR/pycrypto-2.6.1/setup.py", line 278, in run
RuntimeError: autoconf error
sh-3.2#
sh-3.2# python setup.py install
/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't open file 'setup.py': [Errno 2] No such file or directory
sh-3.2# python /Users/maksim/Downloads/airpyrt-tools-master/setup.py install
running install
running bdist_egg
running egg_info
writing requirements to acp.egg-info/requires.txt
writing acp.egg-info/PKG-INFO
writing top-level names to acp.egg-info/top_level.txt
writing dependency_links to acp.egg-info/dependency_links.txt
writing entry points to acp.egg-info/entry_points.txt
error: package directory 'acp' does not exist
А как штатными средствами посмотреть регион / доступные возможности? С платформ iOS / Mac OS.
Может я настолько невнимательный, но я так и не нашёл там этих сведений.
Если у Вас страна из списка из моей статьи, то beamforming и 80MHz полоса для Вас недоступны, можно переделывать, например как я, на США.
Хотя бы просто запись экрана сделать, на маке ведь это легко делается. Очень актуальная тема здесь рассматривается, много людей, включая меня, будут благодарны. Ну и на Пикабу можно выложить)
Вы лучше напишите, с каким конкретно шагом вы не справились?
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 162, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/Users/marina/Downloads/airpyrt-tools-master/acp/__main__.py", line 2, in cli.main()
File «acp/cli.py», line 228, in main
c.connect()
File «acp/client.py», line 21, in connect
self.session.connect()
File «acp/session.py», line 30, in connect
self.sock.connect((self.target, self.port))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File «build/bdist.macosx-10.15-x86_64/egg/acp/__main__.py», line 2, in File «build/bdist.macosx-10.15-x86_64/egg/acp/cli.py», line 228, in main
File «build/bdist.macosx-10.15-x86_64/egg/acp/client.py», line 21, in connect
File «build/bdist.macosx-10.15-x86_64/egg/acp/session.py», line 30, in connect
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
Замечания такие. Для отключения ssh установить dbug в 0x0000 и перегрузить недостаточно. По крайней мере у меня на двух башнях с 7.9.1 это не сработало. Порт ssh всё равно открыт и светится наружу с вместе портом 5001. Для отключения необходимо в консоли ssh подключения к airport-у выполнить «acp remove dbug» и перегрузить.
Думаю сбросить капсулу и попробовать еще раз, но не умрет ли после таких манипуляций?
Потому что есть разные 5ггц:
5ггц диапазон N — 20/40 мгц
5 ггц диапазон AC — 20/40/80 мгц
Соответственно АС есть только на башнях 6 поколения, они и вещают на 80мгц
Сделал все по инструкции (ssh не выключил пока)
В настройках роутера страна — US, но канал в 80мгц не включается, помогите пожалуйста
(Extreme A1354)
Сделал по инструкции, немного повозившись. Все получилось с Капсулой и Экстримом РСТ. Теперь есть проблема с РСТ Airport Express, надо менять настройки и в нем, чтобы было нормальное подключение в качестве расширителя сети.
Подскажите, можно ли эту же процедуру повторить и с ним?
Спасибо, попробую. Небольшое уточнение- у Airport Express первого поколения, действительно, только 802.11b/g; у третьего (последнего) — 802.11b/g/n/a (до 540 Mbps). Я использую Express для сетевого соединения с аудио устройством, не имеющим Wi-Fi. Кроме этого, в Express есть оптический выход для аудио, бывает полезно в ряде случаев.
После смены региона на таймкапсуле Airport Express РСТ перестал работать нормально, постоянный сбой коннекта и маленькая скорость. Надо и его "лечить", видимо.
Да, с Airport Express тоже все получилось. Спасибо еще раз.
All3, огромное спасибо! Я так долго ждал этого.
Итак, небольшое саммари, может быть кому-нибудь пригодится:
- Запустить терминал (Launchpad-Другие — Terminal).
- Скачать https://github.com/x56/airpyrt-tools, нажав в правом верхнем углу зеленую кнопку Clone or Download и выбрать Download ZIP. Распаковать архив.
- В терминале ввести команду cd и перетащить скачанную папку. Должно получиться что-то наподобие этого: cd /Users/имяВашейУчетнойЗаписи/Downloads/airpyrt-tools-master и нажать Enter/Return
- В терминал вставить команду: python setup.py install
- В терминал вставить команду с указанием адреса маршрутизатора (примерно такого вида — 10.0.1.1) и пароля маршрутизатора (можно посмотреть или в утилите AirPort, или в трее, нажав на иконку WiFi с зажатым Option/Alt): python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --setprop dbug 0x3000
- В терминал вставить команду: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot
- Ждем перезагрузки устройства. Подключаемся к устройству, для чего в терминал вставляем: ssh root@АДРЕСМАРШРУТИЗАТОРА Вводим пароль от устройства.
- В терминале вводим 2 команды для смены региона на США:
acp -q syRe=0x00000000
acp static apple-sku=FCC - В терминале вводим команды для закрытия SSH: acp remove dbug
reboot - После перезагрузки вводим: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot
- После перезагрузки: python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --setprop dbug 0x0000
python -m acp -t АДРЕСМАРШРУТИЗАТОРА -p ПАРОЛЬМАРШРУТИЗАТОРА --reboot - Удаляем скачанную папку airpyrt-tools-master в Загрузках.
- Проверяем, нажав с Option/Alt на соединение, где часы.
- Радуемся!!!
Автору еще раз огромное спасибо!!!
Sudo su забыли до 2 пункта. Без рут прав не установится
sh-3.2# python -m acp -t 10.0.1.1 -p **** –setprop dbug 0x3000
error: unrecognized arguments: –setprop dbug 0x3000
«—setprop dbug 0x0000» снова создаст переменную dbug (пусть даже нулевую) которая при «acp remove dbug” была удалена насовсем.
Отмечу отдельно, что наличии даже нулевой переменной dbug на моих башнях с 7.9.1 ssh оставался включённый и порт ssh был открыт.
…
Installed /Library/Python/2.7/site-packages/acp-1.0-py2.7.egg
Processing dependencies for acp==1.0
Searching for pycrypto
Reading pypi.python.org/simple/pycrypto
Download error on pypi.python.org/simple/pycrypto: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) — Some packages may not be found!
Couldn't find index page for 'pycrypto' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading pypi.python.org/simple
Download error on pypi.python.org/simple: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) — Some packages may not be found!
No local packages or download links found for pycrypto
error: Could not find suitable distribution for Requirement.parse('pycrypto')
Что с этим делать?
Сейчас картина такая:
Если башня делает автоустановку, то она может выставить например 132 канал, а вручную это сделать нельзя, т.к. в списке этих каналов нет.
Есть решение для этого?
Apple TimeCapsule/AirPort Extreme. Root доступ и побег из привязанного региона