How to add second WAN port to Linksys EA2700 with dd-wrt

First of all terrible router, don’t buy it, this is only if you already have it and you need to squeeze the last drops of life from it.

Why would you want second WAN port ? In my case, it was because the one that I already had stopped working, so I was wondering if there is a way to use one of the other 4 as WAN. There is.


There is a already very good article about DD-WRT on Linksys EA27600  by Sacha Häberling, I am not going to repeat everything, I’ll just add some details.

  1. First you need to get rid of the ridiculous modern UI that Linksys ship with the router and switch back to Linksys Classic UI. I made the mistake to assume that since I already have it, I may skip this step – no, do it even if you already reverted to the old firmware.
  2. Do 30-30-30- reset (30 seconds holding reset with power on, unplug the power cable for 30 seconds, plug again and hold for another 30 seconds. Reset button is pressed the whole time)
  3. Download the latest firmware you think might work  from DD-WRT FTP server. I haven’t had time to experiment with a lot of them to see if the latest works reliably. The original article recommends r30471 , the latest someone confirmed still works good is r30805, so I installed this one. If you have time – check the latest one. Install it from the firmware update menu in the web interface.
  4. Log in the new interface, go to DD-WRT administration panel > commands and execute
  5. Do another 30-30-30 reset and this should be it. Then configure your router as usual.


So far so good, now I want to make port 4 as it is labeled on the box (actually port 3) to be another WAN port. If you need to know more about what is going on, I strongly advise you to check dd-wrt’s explanation about how ports and vlans work.

Long story short, you have 5 LAN ports, they are usually split in 2 virtual LAN groups, one for WAN (or “the Internet”) and the other is for your local LAN network. The fact that we can move physical LAN port to another virtual LAN make this whole thing possible.

For EA2700 there are 3 virtual groups, I am no really sure, but I suspect this is because of the dual band or guest network or something.

Login via telnet or ssh in the router and execute:

What this means is:
– 5 and 8 are so called processor ports, so we don’t care about them for now.
– the asterisk after 5 and 8 in the first two vlans indicates these are the local virtual LANs, meaning that they are supposed to receive internet from the outside.
– port 4 is the WAN port (we count from 0)
Guides recommend to save your initial configuration somewhere in case you need to restore it.

Lets move port 3 (4 on the box) out of vlan 0 and 1 and move it to 2.

Then we can check the port/vlans:

The first number after portXvlans indicates the vlan for the port, the rest are attributes, 16 means “tagged” and there is some kind of convention to always tag the CPU port.
Now we want to make port 3 another WAN port:

and finish by committing our changes and restart

Plug the cable from your ISP in the fourth port and you should have still working old router even if it tries to get rid of you.

My VIM Setup

This will be my first post in English, I give up – after so many year,me  having doubts about my English is going to get any better so I hope you understand me at least.

Why ?

I am using VIM as my main editor for php and javascript for more than a year already.

What I learned is that I really like this minimalist approach – building your own “IDE” step by step, including only the things you need. If you prefer full IDE – please go with Intellij (the best I have used in this class), but if you are going to use Sublime Text or VSCode or Atom or whatever, there is no reason not to use VIM instead.

Then once I got used to all the keybindings and I adjusted them a bit to fit my workflow I got hooked. Now I can barely work with “normal” text editor. I spent some time to learn touchtyping and now I am getting really irritated when my fingers have to move out of the home row of the keyboard. VIM helps a ton with this. I even added a plugin for Firefox called vimium so I can control my browser with vim key bindings (its not ideal, but its something)

Train yourself

You really need to teach yourself out of the habit of using arrow keys. In my experience this wont happen until you just disable the arrow keys. Just put this in your .vimrc


Plugin manager

First we are going to start with the plugin manager. I prefer using Vundle, one you set it up it is really easy to work with. You have other options like Pathogen or vim-plug. It doesn’t matter so much which one you choose, just pick one.


I am going to share with you just the essentials.

vim-javascript adds better syntax highlighting, but if you are writing code for nodejs

vim-node will give you better support for “gf” (go to file) and “gd” (go to definition), etc.

php-vim will get you started with PHP

YouCompleteMe will give you great autocompletion.

NERDTree will give you the file browsing capabilities that you need. At first I was using it in separate window left of window where I edit code in more classic IDE fashion, but soon I realized that I don’t really need to stay there all the time. Now I use it only when I want to open new file. Pay attention that this plugin is way more powerful than it initially seems. You can create new files/folders with “ma” or delete them with “md”. Just open nerdtree by either typing “NERDTree” or just “:e .” and hit “?” to see the full list of options.

BufExplorer gives you a list of all open buffers so you can easily navigate between them. I have mapped it to <leader>w so I can easily see everything when I have a lot of files opened.

WinTabs is an excellent plugin that will represent all the open files as tabs that you can easily switch between. Your right hand is sitting on keys J – ; and your left on A-F. VIM already usese HJKL for navigation, so it came natural to me to map :WintabsNext to <leader>f and :WintabsPrevious to <leader>a.

ALE or Asynchronous Lint Engine is amazing plugin that lets you integrate linter like eslint or php-cs-fixer with VIM. You get all the best features from the linters that you choose plus automatically fixing your code when you have. No more unformatted code, no more mixed tabs and spaces, no need to come up with excuses why you have used double instead of single quotes.

ack.vim is a plugin that lets you search for text in your project’s files. I personally chose to configure it to work with the_silver_searcher which is much faster. Just type something like Ack @todo and you will get a list of all files that contain this string.

Ctags is the way to navigate inside your code and there are several options that you can choose from, but I really like vim-gutentags. It kind of just works. Just install ctags then the plugin and you are done. I find this one most useful for PHP.

phpactor is where it gets serious. It gives you very nice features like automatically adding “use Whatever/Class/You/Need”. You can see where is your class used, it adds code navigation, jump to definition, refatoring functions, etc. I basically can’t write PHP without this plugin.


Bonus Tips

One of the best things that I have done is remapping my <leader> key to space

The default leader key is “\”, but this just adds too much stress to my right pinky finger and after a while it just hurts. Thumbs are much tougher. Moving to my tab to the right is <space>f, to the left <space>a. It made everything so much easier for me.


I hope I was being helpful. Explore and experiment. I will try to add my dotfiles soon.

Запазване на пароли под Linux, Windows и Mac

Много харесвам Keychain-a на Mac, но той си има своите ограничения – измежду които основното, че не можеш да го ползваш на други операционни системи.

Оказа се, че може би единствения мултиплатформен начин да направите това с KeePass. Има много начини и комбинации от софтуер, с които да имплементирате нещо такова, но ето какво аз съм намерил за най-доброто.

Под Debian KeePass2 присъства сред пакетите, така че можем да го инсталираме лесно

Следва да сложим plugin на Firefox, аз лично предпочитам PassIFox. Този плъгин изисква KeePassHttp за да работи, а на плъгина му трябва mono-complete.

След като инсталирате mono-complete, изтегляте KeePassHttp.plgx , слагате го  в /usr/lib/keepass2 и да рестартирате keepass.

На този етап паролите ви от Firefox се пазят в KeePass. Черешката на тортата е да сложите kdbx файла в OwnCloud за да имате синхронизация между всичите си устройства.


За Max Os въпреки че не е много стабилен препоръчвам  MacPass.

За Android също има owncloud и можете да ползвате KeePassDroid.

Дори iOS феновете ще останат приятно изненадани от комбинацията ownCloud + KeePass Touch.  За Windows мисля няма нужда да обяснявам.


Като цяло имате password management за поне 5 операционни системи, напълно безплатен и чрез ownCloud синхронизиран онлайн, най-близкото което можете да получите до Mac Keychain с бонуса, че работи на (почти) всички устройства, които вероятно притежавате.



Edit: November 2018

За Firefox Quantum PassIFox не работи. Вместо това можете да ползвате Kee заедно с KeePassRPC

Сертификат за Apple Push Notification Service

За да пращате push notifications през APNs можете да използвате библиотека от типа на ZendService\AppleApns

Документацията им е обяснява как се ползва библиотеката, но не и как да си генерираме необходимия сертификат. Процедура, която може да се окаже малко по-сложна от колкото изглежда.

Като за начало, влизаме в и в секцията Identifiers, кликаме на App ID. Ако нямате създадено App ID за вашето приложение си правите и после кликате на името му в списъка, след това избирате бутона Edit.

Screen Shot 2016-03-09 at 6.28.16 PM

Сколвате надолу докато не намерите Push Notifications. От там избирате Create Certificate. Следвате инструкциите на екрана, отваряте Keychain-a и т.н.

Както казва най-добрия iOS dev на юг от стара планина – Милен, тук най-важното е в полето Common Name да напишете нещо, което има някакъв смисъл, примерно MyAppName Push Production или нещо от този тип.

След като генерирате сертификата си го изтегляте и import-вате в keychain-a.

В полето за търсете пишете push, трябва да ви излязат 3 резултата – 1 сертификат, един частен и един публичен ключ.

Screen Shot 2016-03-09 at 5.42.04 PM

Важния момент е тук – избирате сертификата и частния ключ и кликате export и на двата.

Screen Shot 2016-03-09 at 5.40.02 PM

Експортирате с разширение p12. Отваряте един терминал и пишете :


Взимате тоя pem файл и го засилвате към ZendService\AppleApns (примерно) и всичко би трябвало да работи.

Как да си направим Time Machine сървър

Ако не сте използвали Time Machine  до сега трябва да знаете, че както всичко Apple-ско работи доста добре и е страхотен начин за правене на backups. Задължително е поне да се пробва .

Има два начина да правите резервни копия – на втори хард диск или през мрежата. С втори диск всичко си работи добре, но често забравяте да го свържете отново след като си преместите компютъра, ако имате 2 usb порта не искате единия да е постоянно зает и т.н. Да се синхронизира през мрежата е най-удобно, но единствения официален начин това да става е чрез Apple Time Capsule, която в момента струва 300$ или 640 лева в CreativeCenter.

Ако като мен имате някоя стара машина (или в моя случай стари служебни непотребни компютри), която не въши нищо можете да направите следното.

1. Инсталирате някакъв Linux, в моя случай сложих Ubuntu Server последния LTS, просто защото не ми се заниваше сериозно.

2. Инсталирате netatalk, това е софтуер, който поддържа Apple Filing Protocol.
При Ubuntu го има в хранилищата, така че просто едно

ще свърши работа

3. Създаваме папката, където ще ни се съхраняват backup-ите

4. Добавяме в конфигурационния файл “/etc/AppleVolumes.default”:

Мисля че няма много нужда от обяснения, но все пак – задавате път, име на “диска”, който ще бъде споделен по мрежата, volsizelimit е колко голям може да е този диск – в моя случай ~600GB и накрая казвате кой системен потребител има право да го достъпва, при мен е gotha, при вас най-вероятно няма да е. Потребителя трябва да има права за четене и писане в тази директория.

5. Рестартирате сървъра

трябва да свърши работа.

Сега следва на направим правилните настройки на нашия Мак или Hackintosh.
Този диск е “unsupported” и операционната система няма да ни позволи да се закачим към него.

6. Казваме на Mac OS, че не държим диска да е supported

7. Връзваме се към сървъра през Finder.
В Network папката трябва да виждате вече сървъра, връзваме се към него с потребителското име и паролата, която използваме на Linux-ката машина и му казваме да ни запомни данните.

8. Препоръчително е този диск да се монтира автоматично при стартиране на компютъра, за целта отиваме в

  • System Preferences
  • Users & Groups
  • избираме нашия потребител
  • кликаме на таба Login Items
  • кликаме плюса долу и добавяме папката “Time Machine”

9. Правим си настройките на Time Machine
В System Preferences -> Time Machine изберете големия бутон с надпис ON и OFF. За нашите цели ON е добър старт. TM ще ви попита кой диск искате да ползвате избирате мрежовия диск, слагате tick-че на “Encrypt backups” и потвърждавате. Ще ви пита и за парола за криптирането и сте готови. Първия backup ще е отнеме доста време, но след това нещата са много по-бързи и лесни.
Ползвам подобна конфигурация вече месец и нямам никакви проблеми. Не забравяйте, че обикновено когато ти потрябва backup вече е прекалено късно, поиграйте си половин-един час и си спестете ядовете после.

10. Profit !

Фото гуакамоле

Събота, скучно ми е, правя гуакамоле, реших да поснимам малко процеса. Моето гуакамоле си е по някаква моя измислена рецепта, така че да ми харесва на мен, да си знаете.

Малко известен факт е, че гуакамолето всъщност е кръстено на южно американското племе Гуакамоле.

След като ви обогатих културно, време е да започваме. Вкъщи не ядем много люто, за това ще пропуснем лютите чушки и ще сложим само малко червен лук.

IMG_1393 IMG_1395

И 1-2 скилидки чесънче няма да му дойдат зле.


За да не сме хептен без чушки, аз слагам и една печена чушчица 🙂



IMG_1405 IMG_1408

Печена чушка massacre 🙂



Малко доматки…


Кълцам авокадото на едно и после мачкам.



Малко сол и зехтин и ето как изглежда преди да го разбъркам добре.






по принцип хората го мачкат с вилица, аз понеже съм мързелив слагам на миксера само едната бъркалка и бъркам докато започне да ми изглежда добре.

Ето нещо такова е крайния вариант.


По-вкусно е отколкото изглежда, така че не се притеснявайте.

Става бързо и лесно.

чушка 1бр, авокадо 2бр. половин глава лук, 1-2 скилидки чесън, 1-2 чери домата, сол и зехтин на вкус, нещо такова трябва да е .

Между другото онзи интересен факт за произхода на името гуакамоле не е верен, или поне не знаем да има такова племе, но пък звучеше интересно, нали 😉

Инсталиране на MiniDLNA под FreeBSD 10

Ако предпочитате да си компилирате всичко, порта се намира в net/minidlna. Тоест нещо от типа на:

Ако сте по-мързеливи винаги може да инсталирате с

Конфигурационния файл се намира в /usr/local/etc/minidlna.conf и нещата, които трябва да промените или разкоментирате  са:

Разбира се, направете нужните корекции за вашата система. Ако нямате папката може би е добра идея да я създадете:

По подразбиране папката където се намират мултимедийните файлове е в /opt. Трябва да създадете папката ако не съществува при вас. Опитах да използвам папка от типа /home/user/Video, но има проблеми с правата, които така и не разреших за това предпочетох да използвам симлинкове.

Ако всичко ви изглежда ок можем да стартираме услугата.

За да проверите дали всичко е ок можете да проверите log файла:

Ако няма грешки можете да проверите дали всичко работи през вашия телевизор или VLC.

За финал добавете minidlna към услугите, които да се стартират при пускане на машината като добавите към /etc/rc.conf

Накратко това е.  Доста подобно на това как се инсталира MiniDLNA под Mac OS X (за което писах преди), но с особеностите на freebsd.


MiniDLNA при Mac OS X Mavericks

Ако ви трябва добър DLNA сървър за Mac, след логичния избор – Plex, аз бих ви препоръчал MiniDLNA. Бонусите са, че става въпрос за наистина малък сървър ( за разлика от plex ) и аз лично имах проблем с връзването с Xbox 360.

Логично започваме с macports:

След като инсталирате ( отнема доста време ), ще имате сървър, който се намира на /opt/local/sbin/minidlnad и примерен конфигурационен файл /opt/local/etc/minidlna.conf.sample

Ще копираме файла и ще го редактираме

Ще откоментираме и променим следните променливи

Пътя тук трябва да сочи пътя до вашите филми, пр. V,/Users/username/Movies, като “V”, в началото указва, че става въпрос да видео съдържание, има го описано в примерния конфигурационен файл.

Хубаво е и да създадем директорията


С това промените по конфигурационния файл приключват. Сега остава да стартираме сървъра.

Принципно това би трябвало да става като изпълните

но …

сървъра не знае къде му е конфигурационния файл и все още не е сглобил базата данни с вашите мултимедиини, за това трябва да изпълните

Сървъра стартира. Прегледайте за грешки и ако изникне нещо просто вижте какво може да се направи по въпроса.

Дайте на системата няколко минути да обнови базата данни и се свържете с вашия DLNA  клиент, препоръчвам да тествате с VLC от компютъра, таблета или телефона си за да се уверите че всичко е наред.

Допълнение: Не съм сигурен кой точно порт е проблемен, но ако имате проблеми с намирането на DLNA сървъра в мрежата, опитайте да спрете skype и/или torrent клиента си.

Кой е собственик на страничните ми софтуерни проекти ?

Блогът на Joel Spolsky ме насочи към една дискусия, където обсъждат доста интересен въпрос – Кой е собственик на страничните ми софтуерни проекти ?

Ако не програмирате просто за да изкарвате пари, а намирате някакво странно удоволствие в това, вероятно вечер след работа драсвате по някой друг ред код по ваш собствен проект или пък по някое open source приложение, което ви е интересно.
От тук нататък има два варианта:
– вие си кютате спокойно и никой думичка не ви казва
– някой решава, че това не е много хубаво.

Явно някои ръководители смятат, че ако след края на работния ден още можеш да направиш нещо различно, явно не си работил достатъчно през деня, тоест си се скатавал във времето, в което те са ти плащали да твориш код. Други очевидно са на мнение, че ще им откраднеш уникалния софтуерен продукт и ще се наложи да се борят за частица от милионите ти. Трети пък просто не искат да се занимаваш с програмиране извън работа – трябва вечер да спиш, да гледаш телевизия и на следващия ден бодър да се появиш на работа в 8:00 или колкото там кошмарно рано трябва да ходиш на работа.
Причините са много, най-честата реакция е само една – всичко което правиш в или извън работно време е собственост на компанията, за която работиш. Разбира се не всички го правят, но тези които искат да са поне малко правно подсигурени, си правят труда или да добавят в договора някоя друга точица или мило да ви помолят да подпишете декларация на лоялност, конфиденциалност и други ..ост.

Основната причина за това е, че по дефиниция всяко интелектуално “благо”(да се надяваме, че е такова) създадено от теб е твоя собственост и това, че някой ти е платил да го направиш не променя този факт. Тоест Пешо може да напише някоя програма за Иван, но това не означава че Иван става нейния собственик, той просто си я ползва.
За това има просто решение – записваме в договора, че програмиста отстъпва или продава или каквото там се сетите, правата си над продукта на неговия работодател.

Но и това не стига.
Както някои обясни и в по-горе посочената дискусия, възможен е следния сценарии: Наемат ви като гейм дизайнер във фирма и вие всеки ден правите игри от 9 сутринта до 6 следобед. Но в един момент ви идва на ум, че искате 40% от собствеността върху крайния продукт защото набързо сте пресметнали, че точно такъв процент от мисловната ви дейност е протекъл извън работно време.
Дори на пръв поглед да изглежда радикално, все пак е логично Иван да отиде при Пешо и му каже – Виж какво, на ясно съм че изобретяването на нещо не може да става само между 9 и 6, и няма как да който и да било да докаже в колко часа си изобретил въпросното нещо,  искам всичките ти изобретения, независимо кога си ги изобретил и ще си платя за това.

До тук нещата са точни и ясни. Но ако един ден работника реши, че иска извън работно време да си напише някакво софтуерче за собствена употреба и то ли е собственост на компанията, за която работи ? На теория  – да. Това е и неприятната част, защото фирмата, за която работя няма никакво отношение към въпросния софтуер.
За предпазване от подобни ситуации идват безброй клаузи, които се отнасят до това дали софтуера, който си писал е конкурентен на софтуера, който предлага компанията, дали е в същата сфера, дали си използвал технологии разработени във фирмата и т.н. и т.н.

Винаги обаче закона, съответно договорите, подлежат на тълкуване. Всеки може да извърти всичко така че … моя съвет е да не задълбавате много в тези неща.

Когато започнах на предишното ми работно място си дойдох с едни библиотеки писани от мен. Докато работех там съм ги използвал в един-два продукта. Също така в работно  време съм правил промени по библиотеките – добавял съм функционалност, оправял съм бъгове, защото са зависели от работата ми. След като си тръгнах от там си взех последните версии и продължих да си ги ползвам. Имам ли право на това ?
Въпреки, че технически поне пачовете на тези библиотеки би трябвало да не са моя собственост …. общо взето на никой не му пука.  По същата логика аз бих могъл да ги съдя за собственост върху всеки техен продукт, който съдържа въпросните библиотеки.  Знам, че никой няма да тръгне да се заяжда за нещо такова.
Смятам че 90% от работодателите (за които бих работил) ще са на същото мнение стига страничната ми работа да не влияе на основните ми задължения.

Нека обаче сериозно да се разграничим от случая, в който аз вземам код на компанията (макар писан от мен) и го използвам за да пусна мой продукт, който има нещо общо с дейността на фирмата. Смятам го за нелоялно и тогава, мисля с право, всеки ще си има съдебни проблеми.

Странното на този казус е, че въпреки че е решен законово, уж ясно, все пак последната дума си остава на работодателя и на неговата преценка дали правите нещо нередно. Ако смятате, че има такъв шанс, говорете с мениджъра си и му обяснете ситуацията. Ако не – давайте пряко през лехата – харесайте си нещо приятно за правене и творете.