Pārlūkot izejas kodu

Fix broken links and typos in docs (#2600)

galjonsfigur 5 gadi atpakaļ
vecāks
revīzija
87b3ffa6bd

+ 1 - 1
docs/en/build.md

@@ -14,7 +14,7 @@ NodeMCU firmware developers commit or contribute to the project on GitHub and mi
 make
 ```
 
-The default build setup reduces output verbosity to a minimum. The verbositiy level can be increased by setting the `V` environment variable to 1, e.g. with
+The default build setup reduces output verbosity to a minimum. The verbosity level can be increased by setting the `V` environment variable to 1, e.g. with
 ```
 V=1 make
 ```

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
docs/en/compiling.md


+ 1 - 1
docs/en/flash.md

@@ -111,7 +111,7 @@ If you need to customize init data then first download the [Espressif SDK 2.2.0]
 - `0x7fc000` for 8 MB
 - `0xffc000` for 16 MB, modules like WeMos D1 mini pro
 
-See "4.1 Non-FOTA Flash Map" and "6.3 RF Initialization Configuration" of the [ESP8266 Getting Started Guide](https://espressif.com/en/support/explore/get-started/esp8266/getting-started-guide) for details on init data addresses and customization.
+See "4.1 Non-FOTA Flash Map" and "6.3 RF Initialization Configuration" of the [ESP8266 Getting Started Guide](https://www.espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_en.pdf) for details on init data addresses and customization.
 
 ## Determine flash size
 

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
docs/en/lfs.md


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
docs/en/lua-developer-faq.md


+ 2 - 2
docs/en/lua-modules/httpserver.md

@@ -32,13 +32,13 @@ Function to start HTTP server.
 #### Notes
 Callback function has 2 arguments: `req` (request) and `res` (response). The first object holds values:
 
-- `conn`: `net.server` sub module
+- `conn`: `net.socket` sub module
 - `method`: Request method that was used (e.g.`POST` or `GET`)
 - `url`: Requested URL
 - `onheader`: value to setup handler function for HTTP headers like `content-type`. Handler function has 3 parameters:
 
 	- `self`: `req` object
-	- `name`: Hearder name
+	- `name`: Header name
 	- `value`: Header value 
 	
 - `ondata`: value to setup handler function HTTP data. Handler function has 2 parameters:

+ 1 - 1
docs/en/modules/bit.md

@@ -148,7 +148,7 @@ Test if a given bit is cleared.
 - `position` bit position to test
 
 #### Returns
-true if the bit at the given position is 0, false othewise
+true if the bit at the given position is 0, false otherwise
 
 ### Example
 ```lua

+ 3 - 3
docs/en/modules/bme280.md

@@ -108,7 +108,7 @@ Starts readout (turns the sensor into forced mode). After the readout the sensor
 `bme280.startreadout(delay, callback)`
 
 #### Parameters
-- `delay` sets sensor to forced mode and calls the `callback` (if provided) after given number of milliseconds. For 0 the default delay is set to 113ms (sufficient time to perform reading for oversampling settings 16x). For different oversampling setting please refer to [BME280 Final Datasheet - Appendix B: Measurement time and current calculation](http://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280_DS001-11.pdf#page=51).
+- `delay` sets sensor to forced mode and calls the `callback` (if provided) after given number of milliseconds. For 0 the default delay is set to 113ms (sufficient time to perform reading for oversampling settings 16x). For different oversampling setting please refer to [BME280 Final Datasheet - Appendix B: Measurement time and current calculation](https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BME280-DS002.pdf#page=51).
 - `callback` if provided it will be invoked after given `delay`. The sensor reading should be finalized by then so.
 
 #### Returns  
@@ -128,8 +128,8 @@ Initializes module. Initialization is mandatory before read values.
 - (optional) `humi_oss` - Controls oversampling of humidity data. Default oversampling is 16x
 - (optional) `sensor_mode` - Controls the sensor mode of the device. Default sensor more is normal.
 - (optional) `inactive_duration` - Controls inactive duration in normal mode. Default inactive duration is 20ms.
-- (optional) `IIR_filter` - Controls the time constant of the IIR filter. Default fitler coefficient is 16.
-- (optional) `cold_start` - If 0 then the BME280 chip is not initialised. Usefull in a battery operated setup when the ESP deep sleeps and on wakeup needs to initialise the driver (the module) but not the chip itself. The chip was kept powered (sleeping too) and is holding the latest reading that should be fetched quickly before another reading starts (`bme280.startreadout()`). By default the chip is initialised.
+- (optional) `IIR_filter` - Controls the time constant of the IIR filter. Default filter coefficient is 16.
+- (optional) `cold_start` - If 0 then the BME280 chip is not initialised. Useful in a battery operated setup when the ESP deep sleeps and on wakeup needs to initialise the driver (the module) but not the chip itself. The chip was kept powered (sleeping too) and is holding the latest reading that should be fetched quickly before another reading starts (`bme280.startreadout()`). By default the chip is initialised.
 
 |`temp_oss`, `press_oss`, `humi_oss`|Data oversampling|
 |-----|-----------------|

+ 2 - 2
docs/en/modules/bme680.md

@@ -103,8 +103,8 @@ Initializes module. Initialization is mandatory before read values.
 - (optional) `humi_oss` - Controls oversampling of humidity data. Default oversampling is 1x
 - (optional) `heater_temp` - 
 - (optional) `heater_duration` - 
-- (optional) `IIR_filter` - Controls the time constant of the IIR filter. Default fitler coefficient is 31.
-- (optional) `cold_start` - If 0 then the bme680 chip is not initialised. Usefull in a battery operated setup when the ESP deep sleeps and on wakeup needs to initialise the driver (the module) but not the chip itself. The chip was kept powered (sleeping too) and is holding the latest reading that should be fetched quickly before another reading starts (`bme680.startreadout()`). By default the chip is initialised.
+- (optional) `IIR_filter` - Controls the time constant of the IIR filter. Default filter coefficient is 31.
+- (optional) `cold_start` - If 0 then the bme680 chip is not initialised. Useful in a battery operated setup when the ESP deep sleeps and on wakeup needs to initialise the driver (the module) but not the chip itself. The chip was kept powered (sleeping too) and is holding the latest reading that should be fetched quickly before another reading starts (`bme680.startreadout()`). By default the chip is initialised.
 
 |`temp_oss`, `press_oss`, `humi_oss`|Data oversampling|
 |-----|-----------------|

+ 1 - 1
docs/en/modules/coap.md

@@ -170,7 +170,7 @@ none
 
 ## coap.server:var()
 
-Registers a Lua variable as an endpoint in the server. the variable value then can be retrieved by a client via GET method, represented as an [URI](http://tools.ietf.org/html/rfc7252#section-6) to the client. The endpoint path for varialble is '/v1/v/'.
+Registers a Lua variable as an endpoint in the server. the variable value then can be retrieved by a client via GET method, represented as an [URI](http://tools.ietf.org/html/rfc7252#section-6) to the client. The endpoint path for variable is '/v1/v/'.
 
 #### Syntax
 `coap.server:var(name[, content_type])`

+ 2 - 2
docs/en/modules/crypto.md

@@ -51,7 +51,7 @@ Decrypts previously encrypted data.
   - `algo` the name of a supported encryption algorithm to use
   - `key` the encryption key as a string; for AES encryption this *MUST* be 16 bytes long
   - `cipher` the cipher text to decrypt (as obtained from `crypto.encrypt()`)
-  - `iv` the initilization vector, if using AES-CBC; defaults to all-zero if not given
+  - `iv` the initialization vector, if using AES-CBC; defaults to all-zero if not given
 
 #### Returns
 The decrypted string.
@@ -143,7 +143,7 @@ Compute a [HMAC](https://en.wikipedia.org/wiki/Hash-based_message_authentication
 - `key` key to use for signing, may be a binary string
 
 #### Returns
-A binary string containing the HMAC signature. Use [`crypto.toHex()`](#cryptotohex	) to obtain the textual version.
+A binary string containing the HMAC signature. Use [`crypto.toHex()`](#cryptotohex) to obtain the textual version.
 
 #### Example
 ```lua

+ 1 - 1
docs/en/modules/dht.md

@@ -1,7 +1,7 @@
 # DHT Module
 | Since  | Origin / Contributor  | Maintainer  | Source  |
 | :----- | :-------------------- | :---------- | :------ |
-| 2015-06-17 | [RobTillaart](https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib) | [Vowstar](https://github.com/vowstar) | [dhtlib](../../../app/dhtlib/)|
+| 2015-06-17 | [RobTillaart](https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib) | [Vowstar](https://github.com/vowstar) | [dhtlib](../../../app/dht/)|
 
 ## Constants
 Constants for various functions.

+ 1 - 1
docs/en/modules/file.md

@@ -397,7 +397,7 @@ end
 
 !!! Attention
 
-    It is recommended to use only one single model within the application. Concurrent use of both models can yield unpredictable behavior: Closing the default file from basic model will also close the correspoding file object. Closing a file from object model will also close the default file if they are the same file.
+    It is recommended to use only one single model within the application. Concurrent use of both models can yield unpredictable behavior: Closing the default file from basic model will also close the corresponding file object. Closing a file from object model will also close the default file if they are the same file.
 
 !!! Note
 

+ 1 - 1
docs/en/modules/hx711.md

@@ -35,7 +35,7 @@ Read digital loadcell ADC value.
 `hx711.read(mode)`
 
 #### Parameters
-`mode` ADC mode.  This parameter is currently ignored and reserved to ensure backward compatability if support for additional modes is added. Currently only channel A @ 128 gain is supported.
+`mode` ADC mode.  This parameter is currently ignored and reserved to ensure backward compatibility if support for additional modes is added. Currently only channel A @ 128 gain is supported.
 
 |mode | channel | gain |
 |-----|---------|------|

+ 1 - 1
docs/en/modules/mcp4725.md

@@ -34,7 +34,7 @@ Gets contents of the dac register and EEPROM.
 	* `1` EEPROM write has completed
 * `por_state` Power-On-Reset status;
 	* `0` The MCP4725 is performing reset and is not ready.
-	* `1` The MCP4725 has sucessfully performed reset.
+	* `1` The MCP4725 has successfully performed reset.
 
 #### Example
 ```lua

+ 2 - 2
docs/en/modules/sntp.md

@@ -44,7 +44,7 @@ This is passed to the success callback and contains useful information about the
 
 - `offset_s` This is an optional field and contains the number of seconds that the clock was adjusted. This is only present for large (many second) adjustments. Typically, this is only present on the initial sync call.
 - `offset_us` This is an optional field (but one of `offset_s` and `offset_us` will always be present). This contains the number of microseconds that the clock was adjusted. 
-- `delay_us` This is the round trip delay to the server in microseconds. Thie setting uncertainty is somewhat less than this value.
+- `delay_us` This is the round trip delay to the server in microseconds. This setting uncertainty is somewhat less than this value.
 - `stratum` This is the stratum of the server. 
 - `leap` This contains the leap bits from the NTP protocol. 0 means that no leap second is pending, 1 is a pending extra leap second at the end of the UTC month, and 2 is a pending leap second removal at the end of the UTC month.
 
@@ -85,7 +85,7 @@ nil
 ## sntp.getoffset
 
 Gets the offset between the rtc clock and the NTP time. This value should be subtracted from the rtc time to get the NTP time -- which
-corresponds to wall clock time. If the offset returned has changed from the pervious call, then there has been a leap second inbetween.
+corresponds to wall clock time. If the offset returned has changed from the previous call, then there has been a leap second inbetween.
 
 #### Syntax
 `offset = sntp.getoffset()`

+ 1 - 1
docs/en/modules/somfy.md

@@ -26,7 +26,7 @@ Builds an frame defined by Somfy protocol and sends it to the RF transmitter.
 - `repeat_count` how many times the command is repeated
 - `call_back` a function to be called after the command is transmitted. Allows chaining commands to set the blinds to a defined position.
 
-My original remote is [TELIS 4 MODULIS RTS](https://www.somfy.co.uk/products/1810765/telis-4-modulis-rts). This remote is working with the additional info - additional 56 bits that follow data (shortening the Inter-frame gap). It seems that the scrumbling alhorithm has not been revealed yet.
+My original remote is [TELIS 4 MODULIS RTS](https://www.somfy.co.uk/products/1810765/telis-4-modulis-rts). This remote is working with the additional info - additional 56 bits that follow data (shortening the Inter-frame gap). It seems that the scrambling algorithm has not been revealed yet.
 
 When I send the `somfy.DOWN` command, repeating the frame twice (which seems to be the standard for a short button press), i.e. `repeat_count` equal to 2, the blinds go only 1 step down. This corresponds to the movement of the wheel on the original remote. The down button on the original remote sends also `somfy.DOWN` command but the additional info is different and this makes the blinds go full down. Fortunately it seems that repeating the frame 16 times makes the blinds go fully down.
 

+ 2 - 2
docs/en/modules/spi.md

@@ -4,7 +4,7 @@
 | 2015-01-16 | [Ibrahim Abd Elkader](https://github.com/iabdalkader) |              [Arnim Läuger](https://github.com/devsaurus) | [spi.c](../../../app/modules/spi.c)|
 
 All transactions for sending and receiving are most-significant-bit first and least-significant last.
-For technical details of the underlying hardware refer to [metalphreak's ESP8266 HSPI articles](http://d.av.id.au/blog/tag/hspi/).
+For technical details of the underlying hardware refer to [metalphreak's ESP8266 HSPI articles](https://web.archive.org/web/20180425205107/http://d.av.id.au:80/blog/tag/hspi/).
 
 !!! note
 
@@ -151,7 +151,7 @@ spi.set_clock_div(1, old_div)
 
 ## Low Level Hardware Functions
 The low level functions provide a hardware-centric API for application
-scenarios that need to excercise more complex SPI transactions. The
+scenarios that need to exercise more complex SPI transactions. The
 programming model is built up around the HW send and receive buffers and SPI
 transactions are initiated with full control over the hardware features.
 

+ 1 - 1
docs/en/modules/struct.md

@@ -5,7 +5,7 @@
 
 This module offers basic facilities to convert Lua values to and from C structs. Its main functions are `struct.pack`, which packs multiple Lua values into a struct-like string; and `struct.unpack`, which unpacks multiple Lua values from a given struct-like string.
 
-The first argument to both functions is a *format string*, which describes the layout of the structure. The format string is a sequence of conversion elements, which respect the current endianess and the current alignment requirements. Initially, the current endianess is the machine's native endianness and the current alignment requirement is 1 (meaning no alignment at all). You can change these settings with appropriate directives in the format string.
+The first argument to both functions is a *format string*, which describes the layout of the structure. The format string is a sequence of conversion elements, which respect the current endianness and the current alignment requirements. Initially, the current endianness is the machine's native endianness and the current alignment requirement is 1 (meaning no alignment at all). You can change these settings with appropriate directives in the format string.
 
 Note that the float and double conversions are only available with a floating point NodeMCU build.
 

+ 2 - 2
docs/en/modules/switec.md

@@ -11,7 +11,7 @@ can mount two needles from the same axis.
 
 These motors run off 5V (some may work off 3.3V). They draw under 20mA and are designed to be
 driven directly from MCU pins. Since the nodemcu runs at 3.3V, a level translator is required.
-An octal translator like the [74LVC4245A](http://www.nxp.com/products/discretes-and-logic/logic/voltage-level-translators/octal-dual-supply-translating-transceiver-3-state-based-on-pip-74lvc4245a:74LVC4245A) can perfom this translation. It also includes all the
+An octal translator like the [74LVC4245A](https://www.ti.com/lit/ds/symlink/sn74lvc4245a.pdf) can perform this translation. It also includes all the
 protection diodes required. 
 
 These motors can be driven off three pins, with `pin2` and `pin3` being the same GPIO pin. 
@@ -32,7 +32,7 @@ This module does not enforce any range limiting.
 
 ## switec.setup()
 Initialize the nodemcu to talk to a switec X.27 or compatible instrument stepper motor. The default
-slew rate is set so that it should work for most motors. Some motors can run at 600 degress per second. 
+slew rate is set so that it should work for most motors. Some motors can run at 600 degrees per second. 
 
 #### Syntax
 `switec.setup(channel, pin1, pin2, pin3, pin4 [, maxDegPerSec])`

+ 2 - 2
docs/en/modules/u8g2.md

@@ -1,7 +1,7 @@
 # u8g2 Module
 | Since  | Origin / Contributor  | Maintainer  | Source  |
 | :----- | :-------------------- | :---------- | :------ |
-| 2017-06-02 | [Oli Kraus](https://github.com/olikraus/u8glib), [Arnim Läuger](https://github.com/devsaurus) | [Arnim Läuger](https://github.com/devsaurus) | [u8g2.c](../../../apps/modules/u8g2.c)|
+| 2017-06-02 | [Oli Kraus](https://github.com/olikraus/u8glib), [Arnim Läuger](https://github.com/devsaurus) | [Arnim Läuger](https://github.com/devsaurus) | [u8g2.c](../../../app/modules/u8g2.c)|
 
 U8g2 is a graphics library developed at [olikraus/u8g2](https://github.com/olikraus/u8g2) with support for many different displays. It is the successor of [U8glib](https://github.com/olikraus/u8glib) which is not developed any further. Please see [How to port U8g code](https://github.com/olikraus/u8g2/wiki/u8gvsu8g2) for generic porting instructions.
 
@@ -482,7 +482,7 @@ Draw a XBM Bitmap.
 
 See [u8g2 drawXBM()](https://github.com/olikraus/u8g2/wiki/u8g2reference#drawxbm).
 
-XBM bitmaps are supplied as strings to `drawXBM()`. This off-loads all data handling from the u8g2 module to generic methods for binary files. See [graphics_test.lua](../../../lua_examples/u8glib/u8g_graphics_test.lua).
+XBM bitmaps are supplied as strings to `drawXBM()`. This off-loads all data handling from the u8g2 module to generic methods for binary files. See [graphics_test.lua](../../../lua_examples/u8g2/graphics_test.lua).
 
 In contrast to the source code based inclusion of XBMs in upstream u8g2 library, it's required to provide precompiled binary files. This can be performed online with [Online-Utility's Image Converter](http://www.online-utility.org/image_converter.jsp): Convert from XBM to MONO format and upload the binary result.
 

+ 2 - 2
docs/en/modules/ucg.md

@@ -48,13 +48,13 @@ The NodeMCU firmware supports a subset of these:
 - SSD1351
 - ST7735
 
-This integration is based on [v1.5.2](https://github.com/olikraus/Ucglib_Arduino/releases/tag/v1.5.2).
+This integration is based on version [1.5.2](https://github.com/olikraus/Ucglib_Arduino/releases/tag/1.5.2).
 
 ## Overview
 
 ### SPI Connection
 
-The HSPI module is used ([more information](http://d.av.id.au/blog/esp8266-hardware-spi-hspi-general-info-and-pinout/)), so certain pins are fixed:
+The HSPI module is used ([more information](https://web.archive.org/web/20180425221055/http://d.av.id.au:80/blog/esp8266-hardware-spi-hspi-general-info-and-pinout/)), so certain pins are fixed:
 
 * HSPI CLK  = GPIO14
 * HSPI MOSI = GPIO13

+ 4 - 4
docs/en/modules/websocket.md

@@ -5,7 +5,7 @@
 
 A websocket *client* module that implements [RFC6455](https://tools.ietf.org/html/rfc6455) (version 13) and provides a simple interface to send and receive messages.
 
-The implementation supports fragmented messages, automatically respondes to ping requests and periodically pings if the server isn't communicating.
+The implementation supports fragmented messages, automatically responds to ping requests and periodically pings if the server isn't communicating.
 
 **SSL/TLS support**
 
@@ -40,7 +40,7 @@ ws = nil
 
 ## websocket.client:close()
 
-Closes a websocket connection. The client issues a close frame and attemtps to gracefully close the websocket.
+Closes a websocket connection. The client issues a close frame and attempts to gracefully close the websocket.
 If server doesn't reply, the connection is terminated after a small timeout.
 
 This function can be called even if the websocket isn't connected.
@@ -89,7 +89,7 @@ ws:config({headers={['User-Agent']='NodeMCU'}})
 
 ## websocket.client:connect()
 
-Attempts to estabilish a websocket connection to the given URL.
+Attempts to establish a websocket connection to the given URL.
 
 #### Syntax
 `websocket:connect(url)`
@@ -164,7 +164,7 @@ The status code for the close, if not 0 then it represents an error, as describe
 | -17          | Server is not switching protocols |
 | -18          | Connect timeout |
 | -19          | Server is not responding to health checks nor communicating |
-| -99 to -999  | Well, something bad has happenned |
+| -99 to -999  | Well, something bad has happened |
 
 
 ## websocket.client:send()

+ 1 - 1
docs/en/modules/ws2801.md

@@ -1,7 +1,7 @@
 # WS2801 Module
 | Since  | Origin / Contributor  | Maintainer  | Source  |
 | :----- | :-------------------- | :---------- | :------ |
-| 2015-07-12 | [Espressif example](https://github.com/CHERTS/esp8266-devkit/blob/master/Espressif/examples/EspLightNode/user/ws2801.c), [Konrad Beckmann](https://github.com/kbeckmann) | [Konrad Beckmann](https://github.com/kbeckmann) | [ws2801.c](../../../app/modules/ws2801.c)|
+| 2015-07-12 | [Espressif example](https://github.com/CHERTS/esp8266-devkit/blob/master/Espressif/examples/ESP8266/EspLightNode/user/ws2801.c), [Konrad Beckmann](https://github.com/kbeckmann) | [Konrad Beckmann](https://github.com/kbeckmann) | [ws2801.c](../../../app/modules/ws2801.c)|
 
 
 ## ws2801.init()

+ 1 - 1
docs/en/modules/ws2812.md

@@ -13,7 +13,7 @@ handle two led strips at the same time.
 **WARNING**: In dual mode, you will loose access to the Lua's console
 through the serial port (it will be reconfigured to support WS2812-like 
 protocol). If you want to keep access to Lua's console, you will have to 
-use an other input channel like a TCP server (see [example](https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/telnet.lua))
+use an other input channel like a TCP server (see [example](https://github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/telnet/telnet.lua))
 
 ## ws2812.init()
 Initialize UART1 and GPIO2, should be called once and before write().

+ 1 - 1
docs/en/modules/xpt2046.md

@@ -38,7 +38,7 @@ xpt2046.setCalibration(198, 1776, 1762, 273)
 
 
 ## xpt2046.setCalibration()
-Sets the calibration of the display. Calibration values can be optained by using [`xpt2046.getRaw()`](#xpt2046getraw) and read the values in the edges.
+Sets the calibration of the display. Calibration values can be obtained by using [`xpt2046.getRaw()`](#xpt2046getraw) and read the values in the edges.
 
 #### Syntax
 `xpt2046.setCalibration(x1, y1, x2, y2)`

+ 1 - 1
docs/en/sdcard.md

@@ -69,4 +69,4 @@ Subdirectories are supported on FAT volumes only.
 
 ## Multiple partitions / multiple cards
 
-The mapping from logical volumes (eg. `/SD0`) to partitions on an SD card is defined in [`fatfs_config.h`](../../app/include/fatfs_config.h). More volumes can be added to the `VolToPart` array with any combination of physical drive number (aka SS/CS pin) and partition number. Their names have to be added to `_VOLUME_STRS` in [`ffconf.h`](../../app/fatfs/ffconf.h) as well.
+The mapping from logical volumes (eg. `/SD0`) to partitions on an SD card is defined in [`fatfs_config.h`](../../app/include/fatfs_config.h). More volumes can be added to the `VolToPart` array with any combination of physical drive number (aka SS/CS pin) and partition number. Their names have to be added to `_VOLUME_STRS` in [`ffconf.h`](../../../app/fatfs/ffconf.h) as well.

+ 1 - 1
docs/en/spiffs.md

@@ -73,7 +73,7 @@ f    880 http/favicon.ico
 # Technical Details
 
 The SPIFFS configuration is 4k sectors (the only size supported by the SDK) and 8k blocks. 256 byte pages. Magic is enabled and magic_len is also enabled. This allows the firmware to find the start of the filesystem (and also the size).
-One of the goals is to make the filsystem more persistent across reflashing of the firmware. However, there are still cases
+One of the goals is to make the filesystem more persistent across reflashing of the firmware. However, there are still cases
 where spiffs detects a filesystem and uses it when it isn't valid. If you are getting weirdness with the filesystem, then just reformat it.
 
 There are two significant sizes of flash -- the 512K and 4M (or bigger). 

+ 1 - 1
docs/index.md

@@ -2,7 +2,7 @@
 
 NodeMCU is an open source [Lua](https://www.lua.org/) based firmware for the [ESP8266 WiFi SOC from Espressif](http://espressif.com/en/products/esp8266/) and uses an on-module flash-based [SPIFFS](https://github.com/pellepl/spiffs) file system. NodeMCU is implemented in C and is layered on the [Espressif NON-OS SDK](https://github.com/espressif/ESP8266_NONOS_SDK).
 
-The firmware was initially developed as is a companion project to the popular ESP8266-based [NodeMCU development modules]((https://github.com/nodemcu/nodemcu-devkit-v1.0)), but the project is now community-supported, and the firmware can now be run on _any_ ESP module.
+The firmware was initially developed as is a companion project to the popular ESP8266-based [NodeMCU development modules](https://github.com/nodemcu/nodemcu-devkit-v1.0), but the project is now community-supported, and the firmware can now be run on _any_ ESP module.
 
 → [Getting Started](en/getting-started.md)
 

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels