{
	"commands":	[{
			"help":	"Get the current size of free heap memory",
			"hascb":	false,
			"name":	"free"
		}, {
			"help":	"Services",
			"hascb":	true,
			"argtable":	[{
					"glossary":	"Spotify (cspot)",
					"longopts":	"cspot",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Bluetooth Speaker",
					"longopts":	"BT_Speaker",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"AirPlay",
					"longopts":	"AirPlay",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"Disabled|Telnet Only|Telnet and Serial",
					"glossary":	"Telnet server. Use only for troubleshooting",
					"longopts":	"telnet",
					"shortopts":	"t",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"System Statistics. Use only for troubleshooting",
					"longopts":	"stats",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [--cspot] [--BT_Speaker] [--AirPlay] [-t Disabled|Telnet Only|Telnet and Serial] [--stats]",
			"name":	"cfg-syst-services"
		}, {
			"help":	"Get minimum size of free heap memory found during execution",
			"hascb":	false,
			"name":	"heap"
		}, {
			"help":	"Device Name",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"squeezelite-1fe714",
					"glossary":	"New Name",
					"longopts":	"new_name",
					"shortopts":	"n",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [-n squeezelite-1fe714]",
			"name":	"cfg-syst-name"
		}, {
			"help":	"Get version of chip and SDK",
			"hascb":	false,
			"name":	"version"
		}, {
			"help":	"Reboot system",
			"hascb":	false,
			"name":	"restart"
		}, {
			"help":	"Reboot system to Recovery",
			"hascb":	false,
			"name":	"recovery"
		}, {
			"help":	"Reboot system to Squeezelite",
			"hascb":	false,
			"name":	"restart_ota"
		}, {
			"help":	"Preset Options",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"SqueezeAMP|T-WATCH2020 by LilyGo",
					"glossary":	"Known Board Name.\nFor known boards, several systems parameters will be updated",
					"longopts":	"model_config",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}],
			"hint":	" --model_config=SqueezeAMP|T-WATCH2020 by LilyGo",
			"name":	"cfg-hw-preset"
		}, {
			"help":	"General Audio Options",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"Headphones|Subwoofer",
					"glossary":	"On supported DAC, determines the audio jack behavior. Selecting headphones will cause the external amp to be muted on insert, while selecting Subwoofer will keep the amp active all the time.",
					"longopts":	"jack_behavior",
					"shortopts":	"j",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [-j Headphones|Subwoofer]",
			"name":	"cfg-audio-general"
		}, {
			"help":	"Bluetooth Audio Output Options",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"name",
					"glossary":	"Bluetooth audio device name. This applies when output mode is Bluetooth",
					"longopts":	"sink_name",
					"shortopts":	"n",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"pin",
					"glossary":	"Bluetooth security/pin code. Usually 0000. This applies when output mode is Bluetooth",
					"longopts":	"pin_code",
					"shortopts":	"p",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}],
			"hint":	" -n name -p pin",
			"name":	"cfg-audio-bt_source"
		}, {
			"help":	"DAC Options",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"TAS57xx|TAS5713|AC101|WM8978|ES8388|",
					"glossary":	"DAC Model Name",
					"longopts":	"model_name",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Clock GPIO. e.g. 33",
					"longopts":	"clock",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Word Select GPIO. e.g. 25",
					"longopts":	"wordselect",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Data GPIO. e.g. 32",
					"longopts":	"data",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Mute GPIO. e.g. 14",
					"longopts":	"mute_gpio",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Mute GPIO level. Checked=HIGH, Unchecked=LOW",
					"longopts":	"mute_level",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SDA GPIO. e.g. 27",
					"longopts":	"dac_sda",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SCL GPIO. e.g. 26",
					"longopts":	"dac_scl",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"I2C device address. e.g. 106",
					"longopts":	"dac_i2c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Clear configuration",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" --model_name=TAS57xx|TAS5713|AC101|WM8978|ES8388| [--clock=<n>] [--wordselect=<n>] [--data=<n>] [--mute_gpio=<n>] [--mute_level] [--dac_sda=<n>] [--dac_scl=<n>] [--dac_i2c=<n>] [--clear]",
			"name":	"cfg-hw-dac"
		}, {
			"help":	"SPDIF Options",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"<n>",
					"glossary":	"Clock GPIO. e.g. 33",
					"longopts":	"clock",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Word Select GPIO. e.g. 25",
					"longopts":	"wordselect",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Data GPIO. e.g. 32",
					"longopts":	"data",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"glossary":	"Clear configuration",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" --clock=<n> --wordselect=<n> --data=<n> [--clear]",
			"name":	"cfg-hw-spdif"
		}, {
			"help":	"Rotary Control",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"remark",
					"glossary":	"One rotary encoder is supported, quadrature shift with press. Such encoders usually have 2 pins for encoders (A and B), and common C that must be set to ground and an optional SW pin for press. A, B and SW must be pulled up, so automatic pull-up is provided by ESP32, but you can add your own resistors. A bit of filtering on A and B (~470nF) helps for debouncing which is not made by software.\r\nEncoder is normally hard-coded to respectively knob left, right and push on LMS and to volume down/up/play toggle on BT and AirPlay.",
					"checkbox":	false,
					"remark":	true,
					"hasvalue":	false,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"gpio",
					"glossary":	"A/DT gpio",
					"longopts":	"A",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"gpio",
					"glossary":	"B/CLK gpio",
					"longopts":	"B",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"gpio",
					"glossary":	"Switch gpio",
					"longopts":	"SW",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Force Volume down/up/play toggle all the time (even in LMS). ",
					"longopts":	"volume_lock",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Enable alternate mode mode on long-press. In that mode, left is previous, right is next and press is toggle. Every long press on SW alternates between modes (the main mode actual behavior depends on 'volume').",
					"longopts":	"longpress",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Single knob full navigation. Left, Right and Press is navigation, with Press always going to lower submenu item. Longpress is 'Play', Double press is 'Back', a quick left-right movement on the encoder is 'Pause'",
					"longopts":	"knobonly",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"ms",
					"glossary":	"The speed of double click (or left-right) when knob only option is enabled. Be aware that the longer you set double click speed, the less responsive the interface will be. ",
					"longopts":	"timer",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Clear configuration",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Send button events as raw values to LMS. No remapping is possible when this is enabled",
					"longopts":	"raw_mode",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" remark --A=gpio --B=gpio [--SW=gpio] [--volume_lock] [--longpress] [--knobonly] [--timer=ms] [--clear] [--raw_mode]",
			"name":	"cfg-hw-rotary"
		}, {
			"help":	"I2C Bus Parameters",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"0|1",
					"glossary":	"Port",
					"longopts":	"port",
					"shortopts":	"p",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"int",
					"glossary":	"Frequency (Hz) e.g. 100000",
					"longopts":	"speed",
					"shortopts":	"f",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SDA GPIO. e.g. 19",
					"longopts":	"sda",
					"shortopts":	"d",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SCL GPIO. e.g. 18",
					"longopts":	"scl",
					"shortopts":	"c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Clear configuration",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [-p 0|1] [-f int] [-d <n>] [-c <n>] [--clear]",
			"name":	"cfg-hw-i2c"
		}, {
			"help":	"SPI Bus Parameters",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"<n>",
					"glossary":	"Data OUT GPIO",
					"longopts":	"data",
					"shortopts":	"d",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Data IN GPIO",
					"longopts":	"miso",
					"shortopts":	"d",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Clock GPIO",
					"longopts":	"clk",
					"shortopts":	"k",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"DC GPIO",
					"longopts":	"dc",
					"shortopts":	"c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"1|2",
					"glossary":	"SPI Host Number",
					"longopts":	"host",
					"shortopts":	"h",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Clear configuration",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [-d <n>] [-d <n>] [-k <n>] [-c <n>] [-h 1|2] [--clear]",
			"name":	"cfg-hw-spi"
		}, {
			"help":	"Scan I2C bus for devices",
			"hascb":	false,
			"name":	"i2cdetect"
		}, {
			"help":	"Read registers visible through the I2C bus",
			"hascb":	false,
			"argtable":	[{
					"datatype":	"<chip_addr>",
					"glossary":	"Specify the address of the chip on that bus",
					"longopts":	"chip",
					"shortopts":	"c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<register_addr>",
					"glossary":	"Specify the address on that chip to read from",
					"longopts":	"register",
					"shortopts":	"r",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<length>",
					"glossary":	"Specify the length to read from that data address",
					"longopts":	"length",
					"shortopts":	"l",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" -c <chip_addr> [-r <register_addr>] [-l <length>]",
			"name":	"i2cget"
		}, {
			"help":	"Set registers visible through the I2C bus",
			"hascb":	false,
			"argtable":	[{
					"datatype":	"<chip_addr>",
					"glossary":	"Specify the address of the chip on that bus",
					"longopts":	"chip",
					"shortopts":	"c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Specify the i2c port (0|2)",
					"longopts":	"port",
					"shortopts":	"p",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<register_addr>",
					"glossary":	"Specify the address on that chip to read from",
					"longopts":	"register",
					"shortopts":	"r",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<data>",
					"glossary":	"Specify the data to write to that data address",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	256
				}],
			"hint":	" -c <chip_addr> [-p <n>] [-r <register_addr>] [<data>]...",
			"name":	"i2cset"
		}, {
			"help":	"Examine registers visible through the I2C bus",
			"hascb":	false,
			"argtable":	[{
					"datatype":	"<chip_addr>",
					"glossary":	"Specify the address of the chip on that bus",
					"longopts":	"chip",
					"shortopts":	"c",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<size>",
					"glossary":	"Specify the size of each read",
					"longopts":	"size",
					"shortopts":	"s",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" -c <chip_addr> [-s <size>]",
			"name":	"i2cdump"
		}, {
			"help":	"Display",
			"hascb":	true,
			"argtable":	[{
					"datatype":	"<I2C|SPI>",
					"glossary":	"Interface (default I2C)",
					"longopts":	"type",
					"shortopts":	"t",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<SH1106|SSD1306|SSD1322|SSD1326|SSD1327|SSD1675|SSD1351|ST7735|ST7789|ILI9341|>",
					"glossary":	"Driver",
					"longopts":	"driver",
					"shortopts":	"d",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"-1|1|4",
					"glossary":	"Bit Depth (only for SSD1326 displays)",
					"longopts":	"depth",
					"shortopts":	"p",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"I2C address (default 60)",
					"longopts":	"address",
					"shortopts":	"a",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Width",
					"longopts":	"width",
					"shortopts":	"w",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Height",
					"longopts":	"height",
					"shortopts":	"h",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	1,
					"maxcount":	1
				}, {
					"glossary":	"Rotate 180 degrees",
					"longopts":	"rotate",
					"shortopts":	"r",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Flip horizontally",
					"longopts":	"hf",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"Flip vertically",
					"longopts":	"vf",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SPI Only. Bus Speed (Default 8000000). SPI interface can work up to 26MHz~40MHz",
					"longopts":	"speed",
					"shortopts":	"s",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"SPI Only. CS GPIO (for SPI displays)",
					"longopts":	"cs",
					"shortopts":	"b",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Backlight GPIO (if applicable)",
					"longopts":	"back",
					"shortopts":	"b",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"datatype":	"<n>",
					"glossary":	"Reset GPIO",
					"longopts":	"reset",
					"checkbox":	false,
					"remark":	false,
					"hasvalue":	true,
					"mincount":	0,
					"maxcount":	1
				}, {
					"glossary":	"clear configuration and return",
					"longopts":	"clear",
					"checkbox":	true,
					"remark":	false,
					"hasvalue":	false,
					"mincount":	0,
					"maxcount":	1
				}],
			"hint":	" [-r] [-t <I2C|SPI>] [-d <SH1106|SSD1306|SSD1322|SSD1326|SSD1327|SSD1675|SSD1351|ST7735|ST7789|ILI9341|>] [-p -1|1|4] [-a <n>] -w <n> -h <n> [--hf] [--vf] [-s <n>] [-b <n>] [-b <n>] [--reset=<n>] [--clear]",
			"name":	"cfg-hw-display"
		}],
	"values":	{
		"cfg-syst-services":	{
			"BT_Speaker":	true,
			"AirPlay":	true,
			"cspot":	true,
			"stats":	false,
			"telnet":	"Telnet and Serial"
		},
		"cfg-syst-name":	{
			"new_name":	"squeezelite-1fe714"
		},
		"cfg-hw-preset":	{
			"model_config":	"previous config value"
		},
		"cfg-audio-general":	{
			"jack_behavior":	"Subwoofer"
		},
		"cfg-audio-bt_source":	{
			"sink_name":	"SMSL BT4.2",
			"pin_code":	"0000"
		},
		"cfg-hw-dac":	{
			"dac_sda":	33,
			"dac_scl":	32,
			"model_name":	"AC101"
		},
		"cfg-hw-spdif":	{
		},
		"cfg-hw-rotary":	{
		},
		"cfg-hw-i2c":	{
			"speed":	400000
		},
		"cfg-hw-spi":	{
			"data":	13,
			"clk":	14,
			"host":	1
		},
		"cfg-hw-display":	{
			"rotate":	false,
			"hf":	false,
			"vf":	false
		}
	}
}