I just tried to flash the LEDE firmware onto a TP-Link Archer C7 v2.0 (EU) router and ran into some problems. Because of some EU frequency regulations the manufacturers had to lock down their devices and therefore use more or less woking strategies  to prevent the installation of alternative firmware(s) like OpenWrt, DD-Wrt or LEDE.

While trying to upload the LEDE binary, the web interface threw the following error:

Error code: 18005

Upgrade unsuccessfully because the version of the upgraded file was incorrect. Please check the file name.

To bypass this, i had to rename the LEDE binary to the name of a official update file for the currently installed version:

Hardware Version: Archer C7 v2 00000000

Installed firmware: 3.15.1 Build 160616 Rel.44182n

  1. Download LEDE: LEDE For TP-LInk Archer C7 v2.0 EU in version 17.01.03
  2. Rename the file to: ArcherC7v2_en_eu_3_15_1_up_boot(160616).bin
  3. (Some people reported that your connected client must have a static ip address of 192.168.0.66 for the upload to work , but maybe this is not necessary. Please comment if it works with other IPs.)
  4. Go to the admin interface (with factory firmware installed) of the router and upload the renamed file under “System Tools” -> “Firmware Upgrade”.
  5. System should reboot into the LuCI web interface of LEDE.

 

I use the open source mindmapping software freeplane on a day to day basis. Because of its java nature the gui tends to cause a little bit of eye strain for the spoiled average mac / apple user, but the rich feature set makes up for that! Freeplane has an integrated scripting api which can be used to freely manipulate the nodes, attributes and connections of a mindmap with javascript or groovy.

I recently had the need to paste mindmap structures into a redmine wiki (which uses the textile markup) and groovy was still on my “look into it soon”-list. So i took the chance.

Here’s the gist:
-> Most recent version on github

import javax.swing.*;

/*
*	Export Freeplane mindmap branch to nested list in textile format e.g. for use in Redmine wiki
*	- Save as <filename>.groovy in <freeplane directory>/scripts/
	- Select node and start script from menu: Tools -> Scripts -> <filename>
*
*/

def process(thisNode, childPosition) {
		def result =""
		result = prefix(childPosition) + thisNode.text + suffix(childPosition)
    	thisNode.children.each {
        result += process(it, childPosition + 1)
		
    
    }
    return result
}
 
def showDialog(String text) {
    def dialog = new JDialog(ui.frame)
    dialog.setSize(500, 700)
    dialog.setLocationRelativeTo(ui.frame)
    dialog.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE )
    dialog.add(new JScrollPane(new JTextArea(text)))
    ui.addEscapeActionToDialog(dialog)
    dialog.visible = true
}

def prefix(position){
	if(position == 0){
		return "h1. "
	} else if (position == 1){
		return "\nh2. "
	} else {
		return "*".multiply(position-1)+" "
	}
}

def suffix(position){
	if(position == 0){
		return "\n"
	} else if (position == 1){
		return "\n\n"
	} else {
		return "\n"
	}
}
def output = process(node, 0);

showDialog(output)